我可以像
pprint.pprint
那样打印漂亮的数据输出(换行、缩进),但同时也像 reprlib.repr
那样缩短列表吗?
一个丑陋的黑客似乎是
pprint(eval(reprlib.repr(data)))
,但是有更好的方法吗?
从 Python 3.12 开始,
reprlib.Repr
有一个 indent
选项,您可以使用它来进行漂亮打印。无需 pprint
模块。
>>> example = [1, 'spam', {'a': 2, 'b': 'spam eggs', 'c': {3: 4.5, 6: []}}, 'ham']
>>> from reprlib import Repr
>>> print(Repr(indent=4).repr(example))
[
1,
'spam',
{
'a': 2,
'b': 'spam eggs',
'c': {
3: 4.5,
6: [],
},
},
'ham',
]
>>> print(Repr(indent=4, maxlevel=1).repr(example))
[
1,
'spam',
{...},
'ham',
]
>>>
来源:https://docs.python.org/3/library/reprlib.html#reprlib.Repr.indent
您可以通过重写其类上的
__repr__()
方法来更改对象的打印方式。
Python 将允许您覆盖任何类的 repr,因此请小心使用它。