How to get the previous line in a file?

dhn daniel.neilson at gmail.com
Fri Mar 16 18:11:05 EDT 2007


On Mar 16, 5:10 pm, kyoso... at gmail.com wrote:
> On Mar 16, 3:51 pm, Shane Geiger <sgei... at ncee.net> wrote:
>
>
>
> > lines = open('/tmp/foo.py',
> > "r").read().splitlines()
>
> > previous_line =
> > ''
>
> > for line in
> > lines:
>
> >     if "foo" in
> > line:
>
> >         print "found foo in the current line.  The previous line is:  "
> > +
> > previous_line
>
> >     previous_line =
> > line
>
> > Qilong Ren wrote:
> > > Hi,all
>
> > > I am new to this list. And I am glade I am here.
> > > I have a question. I need to do some text processing. I need to read
> > > from a file line by line. If some line is met with some condition, the
> > > previous line needs some modification. How to get the info of the
> > > previous line?
>
> > > Thanks!
> > > Qilong
>
> > > ------------------------------------------------------------------------
> > > Never miss an email again!
> > > Yahoo! Toolbar
> > > <http://us.rd.yahoo.com/evt=49938/*http://tools.search.yahoo.com/toolb...>
> > > alerts you the instant new Mail arrives. Check it out.
> > > <http://us.rd.yahoo.com/evt=49937/*http://tools.search.yahoo.com/toolb...>
>
> > --
> > Shane Geiger
> > IT Director
> > National Council on Economic Education
> > sgei... at ncee.net  |  402-438-8958  |  http://www.ncee.net
>
> > Leading the Campaign for Economic and Financial Literacy
>
> >  sgeiger.vcf
> > 1KDownload
>
> Hi,
>
> You should be able to use the file object's seek and tell methods. Or,
> since you're using a list, you could use a counter and when the text
> is found, you can print the previous line by subtracting one from the
> counter.
>
> counter = 0
> for line in lines:
>    if 'foo' == line:
>       print 'found line. the previous line is: ' %s (lines[counter-1])
>    counter += 1
>
> # Or something like that. Experiment!
>
> Mike

A more pythonic solution makes use of enumerate().

for number, line in enumerate(lines):
    if line == 'foo':
        print 'found line. the previous line is: %s' % lines[number -
1]




More information about the Python-list mailing list