On Feb 16, 5:48 pm, Imaginationworks <[email protected]> wrote:
> Hi,
>
> I am trying to read object information from a text file (approx.
> 30,000 lines) with the following format, each line corresponds to a
> line in the text file. Currently, the whole file was read into a
> string list using readlines(), then use for loop to search the "= {"
> and "};" to determine the Object, SubObject,and SubSubObject.
If you open(filename).read() this file into a variable named data, the
following pyparsing parser will pick out your nested brace
expressions:
from pyparsing import *
EQ,LBRACE,RBRACE,SEMI = map(Suppress,"={};")
ident = Word(alphas, alphanums)
contents = Forward()
defn = Group(ident + EQ + Group(LBRACE + contents + RBRACE + SEMI))
contents << ZeroOrMore(defn | ~(LBRACE|RBRACE) + Word(printables))
results = defn.parseString(data)
print results
Prints:
[
['Object1',
['...',
['SubObject1',
['....',
['SubSubObject1',
['...']
]
]
],
['SubObject2',
['....',
['SubSubObject21',
['...']
]
]
],
['SubObjectN',
['....',
['SubSubObjectN',
['...']
]
]
]
]
]
]
-- Paul
--
http://mail.python.org/mailman/listinfo/python-list