Python提供了丰富的内置模块,这些模块提供了大量的功能,涵盖了文件操作、网络编程、字符串处理、数学运算、日期和时间处理、系统编程等各个方面。
本系列将会陆续整理分享一些有趣、有用的内置模块。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/13aRH4FMdCOm5GghemfSmDQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_built-in_modules
data = {
'name': 'Alice',
'age': 30,
'children': ['Bob', 'Charlie'],
'address': {
'city': 'NY',
'street': 'ST1',
'zipcode': '12345'
}
}
{'name': 'Alice', 'age': 30, 'children': ['Bob', 'Charlie'], 'address': {'city': 'NY', 'street': 'ST1', 'zipcode': '12345'}}
{'address': {'city': 'NY', 'street': 'ST1', 'zipcode': '12345'},
'age': 30,
'children': ['Bob', 'Charlie'],
'name': 'Alice'}
-
pp():
pprint.pp(object, stream=None,
indent=1, width=80,
depth=None, *, compact=False,
sort_dicts=False, underscore_numbers=False)
-
object:要打印的对象。 -
stream:一个文件型对象,可通过调用其 write() 方法将输出写入该对象。如果为 None(默认值),则使用 sys.stdout。 -
indent:要为每个嵌套层级添加的缩进量,默认为1。 -
width:输出中每行所允许的最大字符数,,超过宽度的部分会被折行处理,默认为80。 -
depth:可被访问的嵌套层级数量。如果要打印的数据结构具有过深的层级,则其包含的下一层级将用 … 替换。如果为 None(默认值),则不会限制被格式化对象的层级深度。 -
compact:控制长序列的格式化方式。如果为 False(默认值),则序列的每一项将被格式化为单独的行,否则在格式化每个输出行时将根据 width 限制容纳尽可能多的条目,即以更紧凑的方式输出,省略一些空白行和逗号。 -
sort_dicts:如果为 True,则在格式化字典时将基于键进行排序,否则将按插入顺序显示它们,默认为 False。 -
underscore_numbers:如果为 True,则在格式化整数时将使用 _ 字符作为千位分隔符,否则将不显示下划线,默认为 False。
{'name': 'Alice',
'age': 30,
'children': ['Bob', 'Charlie'],
'address': {'city': 'NY', 'street': 'ST1', 'zipcode': '12345'}}
{ 'address': {...},
'age': 30,
'children': [...],
'name': 'Alice'}
# 将输出保存到本地文件
with open('output.txt' , 'w') as f:
pprint.pp(data , stream=f)
-
pprint():
{'address': {'city': 'NY', 'street': 'ST1', 'zipcode': '12345'},
'age': 30,
'children': ['Bob', 'Charlie'],
'name': 'Alice'}
-
pformat():
"{'address': {'city': 'NY', 'street': 'ST1', 'zipcode': '12345'},n 'age': 30,n 'children': ['Bob', 'Charlie'],n 'name': 'Alice'}"
-
isreadable():
pprint.isreadable(data)
# True
-
isrecursive():
stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
stuff.insert(0, stuff) # 创建递归引用
# 判断对象是否需要递归表示
pprint.isrecursive(stuff)
# 输出:True
-
saferepr():
stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
stuff.insert(0, stuff) # 创建递归引用
# 使用 saferepr 获取安全的字符串表示
safe_repr = pprint.saferepr(stuff)
print(safe_repr)
# 输出: "[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
-
初始化方法(构造函数):
PrettyPrinter(indent=1, width=80,
depth=None, stream=None, *,
compact=False, sort_dicts=True,
underscore_numbers=False)
-
方法:
-
pformat(object):
-
pprint(object):
-
isreadable(object):
-
isrecursive(object):
-
format(object, context, maxlevels, level):
|
|
|
|
|
id() 作为键。如果一个对象需要被展示,而它已经在 context 中表示,则第三个返回值应该为 True 。递归调用 format 方法时,应该将容器的额外条目添加到这个字典中。 |
|
0 。这个参数应该未经修改地传递给递归调用。 |
|
|
|
|
|
eval() 重建对象) |
|
|
-
示例:
PrettyPrinter
对象,并设置了自定义的缩进和宽度。然后,使用这个对象的 pprint
方法来美化打印一个字典,以及使用 format
方法来获取对象信息。# 创建一个PrettyPrinter对象,自定义缩进和宽度
printer = pprint.PrettyPrinter(indent=4, width=50)
# 使用PrettyPrinter对象的pprint方法打印数据
printer.pprint(data)
# 使用PrettyPrinter对象的format方法获取对象信息
formatted_output = printer.format(data, {}, None, 0)
print(formatted_output)
输出结果为:
# printer.pprint(data)输出
{ 'address': { 'city': 'NY',
'street': 'ST1',
'zipcode': '12345'},
'age': 30,
'children': ['Bob', 'Charlie'],
'name': 'Alice'}
# printer.format(data, {}, None, 0)输出
("{'address': {'city': 'NY', 'street': 'ST1', 'zipcode': '12345'}, 'age': 30, 'children': ['Bob', 'Charlie'], 'name': 'Alice'}", True, False)
更多内容可以前往官方文档查看:
https://docs.python.org/3/library/pprint.html


本篇文章来源于微信公众号: 码农设计师