getting the line just before or after a pattern searched

Raymond Hettinger python at rcn.com
Fri Feb 17 06:25:27 EST 2006


s99999999s2003 at yahoo.com wrote:
> hi
>
> i have a file something like this
>
> abcdefgh
> ijklmnopq
> 12345678
> rstuvwxyz
> .....
> .....
> .....
> 12345678
> .....
>
> whenever i search the file and reach 12345678, how do i get the line
> just above and below ( or more than 1 line above/below) the pattern
> 12345678 and save to variables? thanks

You could use the re module to search everything at once:

>>> import re
>>> print re.findall('\n([^\n]*)\n12345678\n([^\n]*)', open('input.dat').read())
[('ijklmnopq ', 'rstuvwxyz '), ('..... ', '.....')]


Raymond




More information about the Python-list mailing list