Need help in extracting lines from word using python
razinzamada at gmail.com
razinzamada at gmail.com
Wed Mar 20 02:13:42 EDT 2013
Thanks steven
On Tuesday, March 19, 2013 8:11:22 PM UTC+5:30, Steven D'Aprano wrote:
> On Tue, 19 Mar 2013 07:20:57 -0700, razinzamada wrote:
>
>
>
> > I'm currently trying to extract some data between 2 lines of an input
>
> > file using Python. the infile is set up such that there is a line
>
> > -START- where I need the next 10 lines of code if and only if the -END-
>
> > condition occurs before the next -START-. The -START- line occurs many
>
> > times before the -END-. Heres a general example of what I mean:
>
> >
>
> > blah
>
> > blah
>
> > -START-
>
> > 10 lines I DONT need
>
> > blah
>
> > -START-
>
> > 10 lines I need
>
> > blah
>
> > blah
>
> > -END-
>
> > blah
>
> > blah
>
> > -START-
>
> > 10 lines I dont need
>
> > blah
>
> > -START-
>
> >
>
> > .... and so on and so forth
>
>
>
> [...]
>
>
>
> > heres the code I have for printing the -START- + 10 lines:
>
> >
>
> > in = open('input.log')
>
>
>
> No it is not. "in" is a reserved word in Python, that code cannot
>
> possibly work, it will give a SyntaxError.
>
>
>
>
>
> Try this code. Untested but it should do want you want.
>
>
>
>
>
> infile = open('input.log')
>
> outfile = open('output.txt', 'a')
>
> # Accumulate lines between START and END lines, ignoring everything else.
>
> collect = False # Initially we start by ignoring lines.
>
> for line in infile:
>
> if '-START-' in line:
>
> # Ignore any lines already seen, and start collecting.
>
> accum = []
>
> collect = True
>
> elif '-END-' in line:
>
> # Write the first ten accumulated lines.
>
> outfile.writelines(accum[:10])
>
> # Clear the accumulated lines.
>
> accum = []
>
> # and stop collecting until the next START line
>
> collect = False
>
> elif collect:
>
> accum.append(line)
>
>
>
> outfile.close()
>
> infile.close()
>
>
>
>
>
>
>
> --
>
> Steven
More information about the Python-list
mailing list