Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pyparsing as pp
- from pyparsing import pyparsing_common as ppc
- def make_keyword(kwd_str, kwd_value):
- return pp.Keyword(kwd_str).setParseAction(pp.replaceWith(kwd_value))
- TRUE = make_keyword("true", True)
- FALSE = make_keyword("false", False)
- NULL = make_keyword("null", None)
- LBRACK, RBRACK, LBRACE, RBRACE, COLON = map(pp.Suppress, "[]{}:")
- jsonString = pp.OneOrMore(pp.CharsNotIn('{}[]:,'))
- jsonNumber = ppc.number()
- jsonObject = pp.Forward()
- jsonValue = pp.Forward()
- jsonElements = pp.delimitedList( jsonValue )
- jsonArray = pp.Group(LBRACK + pp.Optional(jsonElements, []) + RBRACK)
- jsonValue << (jsonString | jsonNumber | pp.Group(jsonObject) | jsonArray | TRUE | FALSE | NULL)
- memberDef = pp.Group(jsonString + COLON + jsonValue)
- jsonMembers = pp.delimitedList(memberDef)
- jsonObject << pp.Dict(LBRACE + pp.Optional(jsonMembers) + RBRACE)
- jsonComment = pp.cppStyleComment
- jsonObject.ignore(jsonComment)
- if __name__ == "__main__":
- s ='{source: s3, aws_access_key_id: myaws, aws_secret_access_key: REDACTED_POSSIBLE_AWS_SECRET_ACCESS_KEY, bucketName: bucket, region_name: eu-west-1, fileType: zip, typeIngestion: FULL, project: trackingcampaigns, functionalArea: client, filePaths: [s3Sensor/2018/], prefixFiles: [Tracking_Sent, Tracking_Bounces, Tracking_Opens, Tracking_Clicks, Tracking_SendJobs], prefixToTables: {Tracking_Bounces: MNG_TRACKING_EXTRACT_BOUNCES_3, Tracking_Sent: MNG_TRACKING_EXTRACT_SENT_3, Tracking_Clicks: MNG_TRACKING_EXTRACT_CLICKS_3, Tracking_Opens: MNG_TRACKING_EXTRACT_OPENS_3, Tracking_SendJobs: MNG_TRACKING_EXTRACT_SENDJOBS_3}, stagingPath: /zipFiles/}'
- results = jsonObject.parseString(s)
- results.pprint()
- print()
- def testPrint(x):
- print(type(x), repr(x))
- testPrint(results)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement