Pretty-Printing PyParsing Деревья

Кто-нибудь реализовал красивую печать (желательно с помощью встроенного Python pprint модуль) деревьев разбора, выводимых из PyParsing, предпочтительно с отступом и выравниванием?

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, просто добавьте дополнительный обработчик в кодировщик для определенного типа данных.

Другие вопросы по тегам