漂亮印刷PyParsing树

时间:2013-03-12 16:40:35

标签: python parsing pretty-print pyparsing parse-tree

有没有人实现了从PyParsing输出的解析树的优秀打印(最好使用Python的内置pprint模块),最好是缩进和对齐?

1 个答案:

答案 0 :(得分:1)

你可以使用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收到错误,只需为编码器添加额外的处理程序以获取特定数据类型。