カスタマイズpprint.PrettyPrinter
pprint
モジュールのドキュメントには、このメソッドPrettyPrinter.format
が書式設定のカスタマイズを可能にすることを目的としていることが記載されています。
サブクラスでこのメソッドをオーバーライドすることは可能だと思いますが、基本クラスのメソッドに行の折り返しとインデントを適用させる方法は提供されていないようです。
- ここで何か不足していますか?
- これを行うためのより良い方法はありますか (別のモジュールなど)?
代替案?
モジュールをチェックアウトしましたがpretty
、これは興味深いようですが、それらのモジュールを変更せずに他のモジュールからクラスのフォーマットをカスタマイズする方法を提供していないようです。
私が探しているのは、ノードを処理するルーチンへの型を識別する型 (または関数) のマッピングを提供できるようにするものだと思います。ノードを処理するルーチンは、ノードを受け取り、その文字列表現を子ノードのリストとともに返します。等々。
私がプリティプリンティングを検討している理由
私の最終的な目標は、DocBook 形式の のカスタム形式のセクションをコンパクトに印刷することですxml.etree.ElementTree
。
(DocBook の Python サポートがこれ以上見つからないことに驚きました。何か見落としていたのかもしれません。)
lxmlを使用するxmlearnというクライアントにいくつかの基本機能を組み込みました。たとえば、Docbook ファイルをダンプするには、次のようにします。
xmlearn -i docbook_file.xml dump -f docbook -r book
かなり中途半端ですが、探していた情報が得られました。
xmlearnには、グラフ イメージを作成したり、XML ドキュメント内のタグ間の関係を示すダンプを作成したりする機能など、他の機能もあります。これらは、この質問とはまったく関係ありません。
任意の深さまでダンプを実行したり、開始点のセットとして XPath を指定したりすることもできます。XPath のようなものは、docbook 固有のフォーマットを時代遅れにしたため、あまり開発されていません。
これはまだ質問に対する答えではありません。すぐにカスタマイズできるきれいなプリンターがどこかにあることを私はまだ望んでいます.