国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python中的pprint模塊

Python中的pprint模塊

2022-03-09 00:09小小程序員ol Python

本文介紹了 Python中的pprint模塊,pprint模塊包含一個(gè)“美觀打印機(jī)”,用于生成數(shù)據(jù)結(jié)構(gòu)的一個(gè)美觀的視圖。格式化工具會(huì)生成數(shù)據(jù)結(jié)構(gòu)的一些表示,不僅能夠由解釋器正確地解析,還便于人閱讀。輸出會(huì)盡可能放在一行上,分解為

一. pprint美觀打印數(shù)據(jù)結(jié)構(gòu)

pprint模塊包含一個(gè)“美觀打印機(jī)”,用于生成數(shù)據(jù)結(jié)構(gòu)的一個(gè)美觀的視圖。格式化工具會(huì)生成數(shù)據(jù)結(jié)構(gòu)的一些表示,不僅能夠由解釋器正確地解析,還便于人閱讀。輸出會(huì)盡可能放在一行上,分解為多行時(shí)會(huì)縮進(jìn)。

1.打印

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from pprint import pprint
 
data = [
 
    (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': 'L'}),
 
    (3, ['m', 'n']),
 
    (4, ['o', 'p', 'q']),
 
    (5, ['r', 's', 't''u', 'v', 'x', 'y', 'z']),
 
]
 
print('PRINT:')
 
print(data)
 
print()
 
print('PPRINT:')
 
pprint(data)

pprint()格式化一個(gè)對(duì)象,并把它作為參數(shù)傳入一個(gè)數(shù)據(jù)流(或者是默認(rèn)的sys.stdout)。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PRINT:
[(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': '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',
 
   'i': 'I',
 
   'j': 'J',
 
   'k': 'K',
 
   'l': 'L'}),
 
 (3, ['m', 'n']),
 
 (4, ['o', 'p', 'q']),
 
 (5, ['r', 's', 'tu', 'v', 'x', 'y', 'z'])]

2 .格式化

要格式化一個(gè)數(shù)據(jù)結(jié)構(gòu)而不是把它直接寫(xiě)入一個(gè)流(即用于日志),可以使用pformat()來(lái)構(gòu)建一個(gè)字符串表示。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import logging
 
from pprint import pformat
 
 
 
data = [
 
    (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': 'L'}),
 
    (3, ['m', 'n']),
 
    (4, ['o', 'p', 'q']),
 
    (5, ['r', 's', 't''u', 'v', 'x', 'y', 'z']),
 
]
 
logging.basicConfig(
 
    level=logging.DEBUG,
 
    format='%(levelname)-8s %(message)s',
 
)
 
logging.debug('Logging pformatted data')
 
formatted = pformat(data)
 
for line in formatted.splitlines():
 
    logging.debug(line.rstrip())

然后可以單獨(dú)打印這個(gè)格式化的字符串或者記入日志。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DEBUG    Logging pformatted data
 
DEBUG    [(1, {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}),
 
DEBUG     (2,
 
DEBUG      {'e': 'E',
 
DEBUG       'f': 'F',
 
DEBUG       'g': 'G',
 
DEBUG       'h': 'H',
 
DEBUG       'i': 'I',
 
DEBUG       'j': 'J',
 
DEBUG       'k': 'K',
 
DEBUG       'l': 'L'}),
 
DEBUG     (3, ['m', 'n']),
 
DEBUG     (4, ['o', 'p', 'q']),
 
DEBUG     (5, ['r', 's', 'tu', 'v', 'x', 'y', 'z'])]

3. 任意類(lèi)

如果一個(gè)定制類(lèi)定義了一個(gè)__repr__()方法,那么pprint()使用的PrettyPrinter類(lèi)還可以處理這樣的定制類(lèi)。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from pprint import pprint
 
class node:
 
    def __init__(self, name, contents=[]):
 
        self.name = name
 
        self.contents = contents[:]
 
 
 
    def __repr__(self):
 
        return (
 
                'node(' + repr(self.name) + ', ' +
 
                repr(self.contents) + ')'
 
        )
 
trees = [
 
    node('node-1'),
 
    node('node-2', [node('node-2-1')]),
 
    node('node-3', [node('node-3-1')]),
 
]
 
pprint(trees)

利用由PrettyPrinter組合的嵌套對(duì)象的表示來(lái)返回完整的字符串表示。

?
1
2
3
4
5
[node('node-1', []),
 
 node('node-2', [node('node-2-1', [])]),
 
 node('node-3', [node('node-3-1', [])])]

4. 遞歸

遞歸數(shù)據(jù)結(jié)構(gòu)由指向原數(shù)據(jù)源的引用表示,形式為<Recursion on typename with id=number>

?
1
2
3
4
5
6
7
8
9
from pprint import pprint
 
local_data = ['a', 'b', 1, 2]
 
local_data.append(local_data)
 
print('id(local_data) =>', id(local_data))
 
pprint(local_data)

在這個(gè)例子中,列表local_data增加到其自身,這會(huì)創(chuàng)建一個(gè)遞歸引用。

?
1
2
3
id(local_data) => 2763816527488
 
['a', 'b', 1, 2, <Recursion on list with id=2763816527488>]

5. 限制嵌套輸出

對(duì)于非常深的數(shù)據(jù)結(jié)構(gòu),可能不要求輸出中包含所有細(xì)節(jié)。數(shù)據(jù)有可能沒(méi)有適當(dāng)?shù)馗袷交部赡芨袷交谋具^(guò)大而無(wú)法管理,或者有些數(shù)據(jù)可能是多余的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from pprint import pprint
 
data = [
 
    (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': 'L'}),
 
    (3, ['m', 'n']),
 
    (4, ['o', 'p', 'q']),
 
    (5, ['r', 's', 't''u', 'v', 'x', 'y', 'z']),
 
]
 
pprint(data, depth=1)
 
pprint(data, depth=2)

使用depth參數(shù)可以控制美觀打印機(jī)遞歸處理嵌套數(shù)據(jù)結(jié)構(gòu)的深度。輸出中未包含的層次用省略號(hào)表示。

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

6.控制輸出寬度

格式化文本的默認(rèn)輸出寬度為80列。要調(diào)整這個(gè)寬度,可以在pprint()中使用參數(shù)width

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from pprint import pprint
 
data = [
 
    (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': 'L'}),
 
    (3, ['m', 'n']),
 
    (4, ['o', 'p', 'q']),
 
    (5, ['r', 's', 't''u', 'v', 'x', 'y', 'z']),
 
]
 
for width in [80, 5]:
 
    print('WIDTH =', width)
 
    pprint(data, width=width)
 
    print()

當(dāng)寬度太小而不能滿(mǎn)足格式化數(shù)據(jù)結(jié)構(gòu)時(shí),倘若截?cái)嗷蜣D(zhuǎn)行會(huì)導(dǎo)致非法語(yǔ)法,那么便不會(huì)截?cái)嗷蜣D(zhuǎn)行。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
WIDTH = 80
 
[(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': 'L'}),
 
 (3, ['m', 'n']),
 
 (4, ['o', 'p', 'q']),
 
 (5, ['r', 's', 'tu', 'v', 'x', 'y', 'z'])]
 
WIDTH = 5
 
[(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': 'L'}),
 
 (3,
 
  ['m',
 
   'n']),
 
 (4,
 
  ['o',
 
   'p',
 
   'q']),
 
 (5,
 
  ['r',
 
   's',
 
   'tu',
 
   'v',
 
   'x',
 
   'y',
 
   'z'])]

compact標(biāo)志告訴pprint()嘗試在每一行上放置更多數(shù)據(jù),而不是把復(fù)雜數(shù)據(jù)結(jié)構(gòu)分解為多行。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from pprint import pprint
 
data = [
 
    (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': 'L'}),
 
    (3, ['m', 'n']),
 
    (4, ['o', 'p', 'q']),
 
    (5, ['r', 's', 't''u', 'v', 'x', 'y', 'z']),
 
]
 
for width in [80, 5]:
 
    print('WIDTH =', width)
 
    pprint(data, width=width)
 
    print()

這個(gè)例子展示了一個(gè)數(shù)據(jù)結(jié)構(gòu)再一行上放不下時(shí),它會(huì)分解(數(shù)據(jù)列表中的第二項(xiàng)也是如此)。如果多個(gè)元素可以放置在一行上(如第三個(gè)和第四個(gè)成員),那么便會(huì)把它們放在同一行上。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
WIDTH = 80
 
[(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': 'L'}),
 
 (3, ['m', 'n']),
 
 (4, ['o', 'p', 'q']),
 
 (5, ['r', 's', 'tu', 'v', 'x', 'y', 'z'])]
 
 
 
WIDTH = 5
 
[(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': 'L'}),
 
 (3,
 
  ['m',
 
   'n']),
 
 (4,
 
  ['o',
 
   'p',
 
   'q']),
 
 (5,
 
  ['r',
 
   's',
 
   'tu',
 
   'v',
 
   'x',
 
   'y',
 
   'z'])]

到此這篇關(guān)于 Python中的pprint模塊的文章就介紹到這了,更多相關(guān) Python pprint模塊內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/python960410445/p/15541962.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩一区在线视频 | 亚洲一区二区三区在线视频 | 亚洲国产精品久久 | 最新国产在线视频 | 欧美三区二区一区 | 四季久久免费一区二区三区四区 | 日韩欧美一区二区中文字幕 | 欧美日韩亚洲成人 | 日韩精品一区在线 | 久久久午夜爽爽一区二区三区三州 | 日本一区二区三区免费观看 | 久久久一区二区三区 | 欧美日韩视频一区二区 | 中文字幕,久热精品,视频在线 | 亚洲精品第一 | 国产一区亚洲 | 欧美午夜精品久久久久免费视 | 在线精品一区 | 荷兰欧美一级毛片 | 色狠狠综合天天综合综合 | 日本中文字幕在线播放 | 国产精品精品久久久 | 亚洲视频在线免费观看 | 日韩精品久久 | 四虎免费紧急入口观看 | 中文成人在线 | 精品www| 成人黄色在线观看 | 成人免费一区二区三区视频软件 | 婷婷91 | 黄色在线 | 日本久久免费 | 日韩高清国产一区在线 | 狠狠草视频 | 日本一区二区三区视频免费看 | 久久91久久久久麻豆精品 | 亚洲精品美女 | 精品国产污网站污在线观看15 | 欧美精品在线播放 | 中文字幕一区二区三区日韩精品 | 中文字幕91 |