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