[Pyparsing] Creating a Dict when elements are spread out
Brought to you by:
ptmcg
From: Russell D. <Rus...@as...> - 2011-09-27 01:27:33
|
I have a file format like this: [Component] foo data_foo [Model] red data_red [Component] bar data_bar [Model] blue data_blue [Model] green data_green I'd like to get something out with: results.Component { foo : data_foo, bar : data_bar } results.Model { red : data_red, blue : data_blue, green : data_green } So I have something like: class FileKeyword(ParserElement): def __new__(cls, name): cls = LineStart() + Literal('[') + Literal(name) + Literal(']') return cls parser = ZeroOrMore( \ Dict(Group( \ FileKeyword("Component").suppress() + Keyword(printables) + ZeroOrMore(Keyword(printables)) )).setResultsName("Component", True) | \ Dict(Group( FileKeyword("Model").suppress() + Keyword(printables) + ZeroOrMore(Keyword(printables)) )).setResultsName("Model", True) \ ) parser.parseString(<above>).dump() Which gives me a: - Component [[[ "foo", "data_foo" ]], [["bar", "data_bar"]]], but no Dict. |