20

Python を対話的に操作すると、任意の複雑なデータ構造 (リストが埋め込まれたリストなど) である結果を表示する必要がある場合があります。それらを表示するデフォルトの方法は、何度もラップする 1 つの大規模な線形ダンプです。注意深く解析して読む。

Pythonオブジェクトを取り、より合理的な方法で表示するものはありますか? 例えば

[0, 1,
    [a, b, c],
    2, 3, 4]

それ以外の:

[0, 1, [a, b, c], 2, 3, 4]

あまり良い例ではないことは承知していますが、お分かりいただけると思います。

4

4 に答える 4

29
from pprint import pprint
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
pprint(a)

私の例のような短いリストの場合、 pprint は実際にはすべてを 1 行に出力することに注意してください。ただし、より複雑な構造の場合、データをきれいに印刷するというかなり良い仕事をします。

于 2008-09-18T11:44:54.990 に答える
10

YAMLがこれに適している場合もあります

import yaml
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
print yaml.dump(a)

プロデュース:

- 0
- 1
- [a, b, c]
- 2
- 3
- 4
于 2008-09-18T12:55:39.547 に答える
8

に加えてpprint.pprintpprint.pformatは読み取り可能な を作成する__repr__のに非常に役立ちます。私の複合体__repr__は通常次のようになります。

def __repr__(self):
    from pprint import pformat

    return "<ClassName %s>" % pformat({"attrs":self.attrs,
                                       "that_i":self.that_i,
                                       "care_about":self.care_about})
于 2008-09-18T14:56:26.557 に答える
3

もう1つの優れたオプションは、IPythonを使用することです。これは、自動プリティ印刷、メソッドのタブ補完、簡単なシェルアクセスなど、多くの追加機能を備えたインタラクティブな環境です。インストールもとても簡単です。

IPythonチュートリアル

于 2008-09-18T12:15:04.760 に答える