Advertisement
Guest User

Untitled

a guest
Oct 25th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. import pyparsing as pp
  2. from pyparsing import pyparsing_common as ppc
  3.  
  4. def make_keyword(kwd_str, kwd_value):
  5. return pp.Keyword(kwd_str).setParseAction(pp.replaceWith(kwd_value))
  6. TRUE = make_keyword("true", True)
  7. FALSE = make_keyword("false", False)
  8. NULL = make_keyword("null", None)
  9.  
  10. LBRACK, RBRACK, LBRACE, RBRACE, COLON = map(pp.Suppress, "[]{}:")
  11.  
  12. jsonString = pp.OneOrMore(pp.CharsNotIn('{}[]:,'))
  13. jsonNumber = ppc.number()
  14.  
  15. jsonObject = pp.Forward()
  16. jsonValue = pp.Forward()
  17. jsonElements = pp.delimitedList( jsonValue )
  18. jsonArray = pp.Group(LBRACK + pp.Optional(jsonElements, []) + RBRACK)
  19. jsonValue << (jsonString | jsonNumber | pp.Group(jsonObject) | jsonArray | TRUE | FALSE | NULL)
  20. memberDef = pp.Group(jsonString + COLON + jsonValue)
  21. jsonMembers = pp.delimitedList(memberDef)
  22. jsonObject << pp.Dict(LBRACE + pp.Optional(jsonMembers) + RBRACE)
  23.  
  24. jsonComment = pp.cppStyleComment
  25. jsonObject.ignore(jsonComment)
  26.  
  27.  
  28. if __name__ == "__main__":
  29. 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/}'
  30.  
  31. results = jsonObject.parseString(s)
  32. results.pprint()
  33. print()
  34. def testPrint(x):
  35. print(type(x), repr(x))
  36. testPrint(results)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement