在Python中结合reprlib和pprint?

问题描述 投票:0回答:2

我可以像

pprint.pprint
那样打印漂亮的数据输出(换行、缩进),但同时也像
reprlib.repr
那样缩短列表吗?

一个丑陋的黑客似乎是

pprint(eval(reprlib.repr(data)))
,但是有更好的方法吗?

python pprint
2个回答
0
投票

从 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


-2
投票

您可以通过重写其类上的

__repr__()
方法来更改对象的打印方式。

Python 将允许您覆盖任何类的 repr,因此请小心使用它。

© www.soinside.com 2019 - 2024. All rights reserved.