pprint
模块可以漂亮地打印列表和字典。
目录
PrettyPrinter()对象
用于构造示例。stream
关键字参数用于设置输出流,流对象上使用的唯一方法是对象的write()
,如果没有输入该参数,则表示标准输出。indent
表示缩进数,默认为1。depth
表示打印深度,如果数据太深,则使用...
替代,默认没有深度限制。width
控制打印宽度,默认为80个字符。compat
默认为False
,长序列会被分为多行,True
表示尽可能一行输出。sort_dicts
默认为True
,字典会根据它的关键字排序。
import pprint
stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
stuff.insert(0, stuff[:])
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(stuff)
'''
[ ['spam', 'eggs', 'lumberjack', 'knights', 'ni'],
'spam',
'eggs',
'lumberjack',
'knights',
'ni']
'''
pp = pprint.PrettyPrinter(width=41, compact=True)
pp.pprint(stuff)
'''
[['spam', 'eggs', 'lumberjack',
'knights', 'ni'],
'spam', 'eggs', 'lumberjack', 'knights',
'ni']
'''
tup = ('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead',
('parrot', ('fresh fruit',))))))))
pp = pprint.PrettyPrinter(depth=6)
pp.pprint(tup)
# ('spam', ('eggs', ('lumberjact', (...))))
prettyPrinter
对象也存在着一些方法
pformat()方法
返回对象的格式化表示。
pprint()方法
在流中打印对象表示。
isreadable()方法
判断对象是否可读。False
表示是递归对象。如果递归的深度大于设置的depth
参数,也返回False
。
isrecursive()方法
判断对象是否可以递归表示。
format()方法
返回3个值:对象的字符串表示,结果是否可读,结构是否可递归。
pprint()
格式化打印字符串,其中参数与PrettyPrinter
对象相同。
pprint.pprint(stuff)
pformat()
以字符串的形式显示格式。其参数与PrettyPrinter
相同。
pprint.pformat(stuff)
pp()
打印对象的格式化表示,并换行。sort_dicts
默认为False,字典将以默认顺序显示,否则按关键字排序显示。
pprint.pp(stuff)
python 3.8新增内容
isreadable()
确定对象是否是可读的。
pprint.isreadable(stuff)
isrecursive()
确定对象是否需要递归表示。
pprint.isrecursive()
saferepr()
返回字符串,防止递归结构。如果存在递归项,则表示为<Recursion on typename with id=number>
。
pprint.saferepr(stuff)
# "[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
更详细信息参考python文档。