定制pprint.PrettyPrinter
该pprint
模块的文档提到该方法PrettyPrinter.format
旨在使自定义格式成为可能。
我收集到可以在子类中覆盖此方法,但这似乎没有提供一种让基类方法应用换行和缩进的方法。
- 我在这里错过了什么吗?
- 有没有更好的方法来做到这一点(例如另一个模块)?
备择方案?
我已经检查了该pretty
模块,它看起来很有趣,但似乎没有提供一种方法来自定义其他模块的类格式而不修改这些模块。
我认为我正在寻找的东西可以让我提供类型(或者可能是函数)的映射,这些类型(或者可能是函数)可以识别类型到处理节点的例程。处理节点的例程将获取一个节点并返回它的字符串表示形式,以及一个子节点列表。等等。
为什么我要研究漂亮的印刷品
我的最终目标是紧凑地打印 DocBook-formatted 的自定义格式部分xml.etree.ElementTree
。
(我很惊讶没有找到对 DocBook 的更多 Python 支持。也许我在那里遗漏了一些东西。)
我在使用lxml的名为xmlearn的客户端中构建了一些基本功能。例如,要转储 Docbook 文件,您可以:
xmlearn -i docbook_file.xml dump -f docbook -r book
这很糟糕,但它让我得到了我正在寻找的信息。
xmlearn还具有其他功能,例如能够构建图形图像并进行转储以显示 XML 文档中标签之间的关系。这些与这个问题几乎完全无关。
您还可以将转储执行到任意深度,或者将 XPath 指定为一组起点。XPath 的东西有点过时了特定于 docbook 的格式,所以它并没有真正得到很好的开发。
这仍然不是这个问题的真正答案。我仍然希望在某个地方有一台易于定制的漂亮打印机。