3
有沒有人實施漂亮的打印(最好使用Python的內置pprint
模塊)從PyParsing輸出的分析樹最好與縮進和對齊?漂亮的印刷PyParsing樹
有沒有人實施漂亮的打印(最好使用Python的內置pprint
模塊)從PyParsing輸出的分析樹最好與縮進和對齊?漂亮的印刷PyParsing樹
你可以使用json。
import json
class PyParseEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, ParseResults):
x = obj.asDict()
if x.keys():
obj = x
else:
x = obj.asList()
if len(x) == 1:
obj = x[0]
else:
obj = x
else:
obj = super(PyParseEncoder, self).default(obj)
return obj
然後
print json.dumps(parseresult, cls=PyParseEncoder, sort_keys=False, indent=2)
如果您收到來自json.dumps錯誤只需添加額外的處理程序,編碼器,用於特定的數據類型。
'pprint.pprint'漂亮字典,列表等。最簡單的方法是將您的分析樹轉換爲列表/字典結構。這可能嗎? – hughdbrown 2013-03-12 17:19:28
使用'asList':'results = parseString(s); pprint(results.asList())'。如果你已經定義了任何結果名稱,你可以使用'asDict()',甚至只使用'dump()'。 – PaulMcG 2013-03-12 17:43:49
@PaulMcGuire:太好了!這對我來說現在。 – 2013-03-12 18:10:49