from pprint import pprint,python pprint,Python中的pprint模块

from pprint import pprint,python pprint,Python中的pprint模块

本文介绍了Python中的pprint模块,它包含了一个“漂亮的打印机”,可以生成数据结构的漂亮视图。格式化工具会生成一些数据结构的表示,这些数据结构不仅能被解释器正确地解释,而且易于人们阅读。输出会尽可能放在一行,分解成多行的时候会缩进。详情请参考以下内容。

目录

一、pprint美工打印数据结构1。打印2。格式3。任意类4。递归5。限制嵌套输出6。控制输出宽度。

一. pprint美观打印数据结构

pprint模块包含一个“漂亮的打印机”来生成数据结构的漂亮视图。格式化工具会生成一些数据结构的表示,这些数据结构不仅能被解释器正确地解释,而且易于人们阅读。输出会尽可能放在一行上,当分成多行时会缩进。

1.打印

从pprint导入pprint

数据=[

(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,{'e': 'E ',' f': 'F ',' g': 'G ',' h': 'H ',

' i': 'I ',' j': 'J ',' k': 'K ',' L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' t''u ',' v ',' x ',' y ',' z']),

]

打印('打印:')

打印(数据)

打印()

打印(' PPRINT:')

pprint(数据)

Pprint()格式化一个对象,并将其作为参数传递给数据流(或默认的sys.stdout)。

打印:

[(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),(2,{'e': 'E ',' f': 'F ',' g': 'G ',' h': 'H ',' I ':' I ':' J ',' k': 'K ',' l': 'L'}),(3,['m ',' n']),(4,['o ',' p ',' q']),(5,['r ',' s ',' tu ',' v ',' x ',' y ',' z ')]

PPRINT:

[(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,

{'e': 'E ',

' f': 'F ',

' g': 'G ',

h': 'H ',

我':'我',

' j': 'J ',

' k': 'K ',

l': 'L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' tu ',' v ',' x ',' y ',' z'])]

2 .格式化

要格式化一个数据结构,而不是将其直接写入一个流(例如,用于日志记录),您可以使用pformat()来构建一个字符串表示。

导入日志记录

从pprint导入p格式

数据=[

(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,{'e': 'E ',' f': 'F ',' g': 'G ',' h': 'H ',

' i': 'I ',' j': 'J ',' k': 'K ',' L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' t''u ',' v ',' x ',' y ',' z']),

]

logging.basicConfig(

级别=记录。调试,

format='%(级别名)-8s %(消息)s ',

)

logging.debug('记录格式化数据')

formatted=pformat(数据)

对于formatted.splitlines()中的行:

logging.debug(line.rstrip())

然后,您可以单独打印这个格式化的字符串或记录它。

调试日志格式化数据

DEBUG [(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

调试(2、

调试{ ' E ':E ',

调试“F”:“F”,

调试' g': 'G ',

调试“H”:“H”,

调试“I”:“I”,

调试“J”:“J”,

调试“K”:“K”,

DEBUG 'l': 'L'}),

DEBUG (3,['m ',' n']),

DEBUG (4,['o ',' p ',' q']),

DEBUG (5,['r ',' s ',' tu ',' v ',' x ',' y ',' z'])]

3. 任意类

如果自定义类定义了__repr__()方法,pprint()使用的PrettyPrinter类也可以处理这样的自定义类。

从pprint导入pprint

类节点:

def __init__(self,name,contents=[]):

self.name=name

self.contents=contents[:]

def __repr__(self):

返回(

节点(' repr(self.name)','

repr(self.contents)')'

)

树=[

节点(“节点1”),

节点('节点2 ',[节点('节点2-1')]),

节点('节点3 ',[节点('节点3-1')]),

]

pprint(树)

使用由PrettyPrinter组合的嵌套对象的表示形式返回完整的字符串表示形式。

[节点(' node-1 ',[]),

node('node-2 ',[node('node-2-1 ',[])]),

node('node-3 ',[node('node-3-1 ',[])])]

4. 递归

递归数据结构通过对id=number的typename以递归形式引用原始数据源来表示。

从pprint导入pprint

local_data=['a ',' b ',1,2]

本地数据.追加(本地数据)

打印(' id(local_data)=',id(local_data))

pprint(本地数据)

在这个例子中,列表local_data被添加到自身,这创建了一个递归引用。

id(本地数据)=2763816527488

['a ',' b ',1,2,id=2763816527488的列表上的递归]

5. 限制嵌套输出

对于非常深的数据结构,可能不需要在输出中包含所有细节。数据格式可能不正确,格式化的文本可能太大而无法管理,或者某些数据可能是冗余的。

从pprint导入pprint

数据=[

(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,{'e': 'E ',' f': 'F ',' g': 'G ',' h': 'H ',

' i': 'I ',' j': 'J ',' k': 'K ',' L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' t''u ',' v ',' x ',' y ',' z']),

]

pprint(数据,深度=1)

pprint(数据,深度=2)

使用depth参数控制漂亮的打印机递归处理嵌套数据结构的深度。未包含在输出中的级别用省略号表示。

[(.), (.), (.), (.), (.)]

[(1, {.}), (2, {.}), (3, [.]), (4, [.]), (5, [.])]

6.控制输出宽度

格式化文本的默认输出宽度是80列。要调整这个宽度,可以使用pprint()中的参数width。

从pprint导入pprint

数据=[

(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,{'e': 'E ',' f': 'F ',' g': 'G ',' h': 'H ',

' i': 'I ',' j': 'J ',' k': 'K ',' L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' t''u ',' v ',' x ',' y ',' z']),

]

对于[80,5]中的宽度:

打印(' WIDTH=',宽度)

pprint(数据,宽度=宽度)

打印()

当宽度过小不符合格式数据结构时,如果截断或换行会导致语法不合法,则不截断或换行。

宽度=80

[(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,

{'e': 'E ',

' f': 'F ',

' g': 'G ',

h': 'H ',

我':'我',

' j': 'J ',

' k': 'K ',

l': 'L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' tu ',' v ',' x ',' y ',' z'])]

宽度=5

[(1,

{'a': 'A ',

' b': 'B ',

c': 'C ',

d': 'D'}),

(2,

{'e': 'E ',

' f': 'F ',

' g': 'G ',

h': 'H ',

我':'我',

' j': 'J ',

' k': 'K ',

l': 'L'}),

(3,

['m ',

n']),

(4,

['o ',

p ',

q']),

(5,

['r ',

s ',

'你',

v ',

x ',

y ',

z'])]

compact标志告诉pprint()尝试在每行上放置更多的数据,而不是将复杂的数据结构分成多行。

从pprint导入pprint

数据=[

(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,{'e': 'E ',' f': 'F ',' g': 'G ',' h': 'H ',

' i': 'I ',' j': 'J ',' k': 'K ',' L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' t''u ',' v ',' x ',' y ',' z']),

]

对于[80,5]中的宽度:

打印(' WIDTH=',宽度)

pprint(数据,宽度=宽度)

打印()

这个例子表明,当一个数据结构不适合另一行时,它将会崩溃(数据列表中的第二项也是如此)。如果多个元素可以放在一行上(如第三和第四个成员),它们将被放在同一行上。

宽度=80

[(1,{'a': 'A ',' b': 'B ',' c': 'C ',' d': 'D'}),

(2,

{'e': 'E ',

' f': 'F ',

' g': 'G ',

h': 'H ',

我':'我',

' j': 'J ',

' k': 'K ',

l': 'L'}),

(3,['m ',' n']),

(4,['o ',' p ',' q']),

(5,['r ',' s ',' tu ',' v ',' x ',' y ',' z'])]

宽度=5

[(1,

{'a': 'A ',

' b': 'B ',

c': 'C ',

d': 'D'}),

(2,

{'e': 'E ',

' f': 'F ',

' g': 'G ',

h': 'H ',

我':'我',

' j': 'J ',

' k': 'K ',

l': 'L'}),

(3,

['m ',

n']),

(4,

['o ',

p ',

q']),

(5,

['r ',

s ',

'你',

v ',

x ',

y ',

z'])]

关于Python中pprint模块的这篇文章到此为止。有关Python中Pprint模块的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: