В документации модуля pprint упоминается, что метод PrettyPrinter.format предназначен для сделать возможным настройку форматирования.
Я понимаю, что этот метод можно переопределить в подклассе, но, похоже, это не дает возможности иметь базовый класс методы применяют перенос строк и отступы.
- Я что-то упустил?
- Есть ли лучший способ сделать это (например, другой модуль)?
Я проверил симпатичную , который выглядит интересно, но, похоже, не дает возможности настраивать форматирование классов из других модулей без изменения этих модулей.
Я думаю, что Я ищу что-то, что позволило бы мне обеспечить сопоставление типов (или, возможно, функций), идентифицирующих типы, с подпрограммами, обрабатывающими узел. Подпрограммы, обрабатывающие узел, берут узел и возвращают его строковое представление вместе со списком дочерних узлов. И так далее.
Почему я ищу красивую печать
Моя конечная цель — компактная печать разделы в произвольном формате xml.etree.ElementTree в формате DocBook.
(Я был удивлен, не обнаружив дополнительной поддержки Python для DocBook. Возможно, я что-то там пропустил.)
Я встроил некоторые базовые функции в клиент под названием xmlearn, который использует lxml. Например, чтобы создать дамп файла Docbook, вы можете:
Код: Выделить всё
xmlearn -i docbook_file.xml dump -f docbook -r book
xmlearn имеет и другие функции, например, возможность строить графическое изображение и делать дампы, показывающие связи между тегами в XML-документе. Это практически не имеет отношения к этому вопросу.
Вы также можете выполнить дамп на произвольную глубину или указать XPath в качестве набора отправных точек. Материал XPath в каком-то смысле устарел для формата docbook, поэтому он не очень хорошо развит.
Это все еще не ответ на вопрос. Я все еще надеюсь, что где-нибудь найдется легко настраиваемый красивый принтер.
Подробнее здесь: https://stackoverflow.com/questions/325 ... y-printers