Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # parse dict-like syntax
- from pyparsing import (Suppress, Regex, quotedString, Word, alphas,
- alphanums, oneOf, Forward, Optional, dictOf, delimitedList, removeQuotes)
- LBRACK,RBRACK,LBRACE,RBRACE,COLON,COMMA = map(Suppress,"[]{}:,")
- integer = Regex(r"[+-]?\d+").setParseAction(lambda t:int(t[0]))
- real = Regex(r"[+-]?\d+\.\d*").setParseAction(lambda t:float(t[0]))
- string_ = Word(alphas,alphanums+"_") | quotedString.setParseAction(removeQuotes)
- bool_ = oneOf("true false").setParseAction(lambda t: t[0]=="true")
- item = Forward()
- key = string_
- dict_ = LBRACE - Optional(dictOf(key+COLON, item+Optional(COMMA))) + RBRACE
- list_ = LBRACK - Optional(delimitedList(item)) + RBRACK
- item << (real | integer | string_ | bool_ | Group(list_ | dict_ ))
- result = item.parseString(text,parseAll=True)[0]
- print result.data[0].dump()
- print result.data[0].segments[0].dump(indent=" ")
- print result.data[0].segments[0].flights[0].dump(indent=" - ")
- print result.data[0].segments[0].flights[0].flightLegs[0].dump(indent=" - - ")
- for seg in result.data[6].segments:
- for flt in seg.flights:
- fltleg = flt.flightLegs[0]
- print "%(airline)s %(airlineCode)s %(flightNo)s" % fltleg,
- print "%s -> %s" % (fltleg["from"].code, fltleg["to"].code)
Add Comment
Please, Sign In to add comment