[Tutor] Parsing text file

John Fouhy john at fouhy.net
Mon May 14 00:29:17 CEST 2007


On 14/05/07, Alan <python at wardroper.org> wrote:
> I'm looking for a more elegant way to parse sections of text files that
> are bordered by BEGIN/END delimiting phrases, like this:
>
> some text
> some more text
> BEGIN_INTERESTING_BIT
> someline1
> someline2
> someline3
> END_INTERESTING_BIT
> more text
> more text

If the structure is pretty simple, you could use a state machine approach.  eg:

import sys
infile = open(sys.argv[1], 'r')

INTERESTING, BORING = 'interesting', 'boring'
interestingLines = []

for line in infile:
  if line == 'BEGIN_INTERESTING_BIT':
    state = INTERESTING
  elif line == 'END_INTERESTING_BIT':
    state = BORING
  elif state == INTERESTING:
    interestingLines.append(line)

return interestingLines

If you want to put each group of interesting lines into its own
section, you could do a bit of extra work (append a new empty list to
interestingLines on 'BEGIN', then append to the list at position -1 on
state==INTERESTING).

HTH!

-- 
John.


More information about the Tutor mailing list