以交互方式使用python,有时需要显示一些任意复杂的数据结构(如带嵌入列表的列表等) 显示它们的默认方式只是一个大规模的线性转储,只是反复包装,你必须仔细解析才能阅读它。
是否有某些内容会占用任何python对象并以更合理的方式显示它。 e.g。
[0, 1,
[a, b, c],
2, 3, 4]
而不是:
[0, 1, [a, b, c], 2, 3, 4]
我知道这不是一个很好的例子,但我认为你明白了。
答案 0 :(得分:26)
from pprint import pprint
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
pprint(a)
请注意,对于像我的例子这样的简短列表,pprint实际上会在一行上打印出来。但是,对于更复杂的结构,它可以很好地打印数据。
答案 1 :(得分:10)
Somtimes YAML可能对此有好处。
import yaml
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
print yaml.dump(a)
产地:
- 0
- 1
- [a, b, c]
- 2
- 3
- 4
答案 2 :(得分:8)
除了pprint.pprint
之外,pprint.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})
答案 3 :(得分:3)
另一个不错的选择是使用IPython,这是一个具有许多额外功能的交互式环境,包括自动漂亮打印,方法选项卡完成,简单的shell访问等等。它也很容易安装。