Python基礎:格式化輸出
哈嘍,大家好,我是了不起。
在平時使用python編寫代碼時,控制臺打印結果變量是必不可少的,而且很多初學者都會很頻繁的使用python自帶的print()方法在代碼中打樁,以判斷自己的代碼邏輯獲取值是正確的。
但是在代碼中如果需要打印的字段中的數值非常多的時候,使用print()打印的話就會顯得很凌亂,比如下面這種場景。
data = [{"first": "第一個值", "second": "第二個值", "third": "第三個值", "fourth": "第四個值", "fifth": "第五個值", },
{"first": [1, 2, 2, 3, 66, 765], "second": {"first":"1","second":"2","third":"3",}, "third": {"first":"1","second":"2","third":"3",}, "fourth": [1,2,3,4,5,], "fifth": ["frist",{"second":{"1":2,"2":"3"}}]}]
定義一個data變量賦值了一個典型的多維列表,然后每個字典中有多個鍵值對,這個時候使用print()方法打印:
>>> print(data)
#輸出結果為
>>> [{'first': '第一個值', 'second': '第二個值', 'third': '第三個值', 'fourth': '第四個值', 'fifth': '第五個值'}, {'first': [1, 2, 2, 3, 66, 765], 'second': {'first': '1', 'second': '2', 'third': '3'}, 'third': {'first': '1', 'second': '2', 'third': '3'}, 'fourth': [1, 2, 3, 4, 5], 'fifth': ['frist', {'second': {'1': 2, '2': '3'}}]}]
使用print()打出來的結果直接會顯示成為一條并且看起來會很凌亂,而且在pycharm工具中會顯示成很長的一條數據,如果這個字典中的多維層級在多一些,我們想要取某一個關鍵值的就會很麻煩。
接下來給大家介紹兩個其他的打印方法,分別為pprint和ic。
一、pprint
pprint(pretty-print)是 Python 標準庫中的一個模塊,可以將 Python 對象以一種可讀性更高的格式打印出來。比起print()函數可以更好的處理復雜的數據結構,例如嵌套的列表、字典等。這里還是以上方的data變量為例,首先使用from pprint import pprint導入pprint,然后使用pprint()方法打印出來的結果如下。
>>> pprint(data)
#輸出結果為
>>> [{'fifth': '第五個值',
'first': '第一個值',
'fourth': '第四個值',
'second': '第二個值',
'third': '第三個值'},
{'fifth': ['frist', {'second': {'1': 2, '2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1', 'second': '2', 'third': '3'},
'third': {'first': '1', 'second': '2', 'third': '3'}}]
可以清晰的看見,pprint()將打印的結果做了一個格式化的操作,將列表中每個字典鍵值進行分行顯示,使字典的結構顯示更加清晰,提高了可閱讀性。
同時pprint()還有一些高級用法,我們可以定義打印數據的縮進、設置輸出寬度等。
1.設置縮進
pprint()方法中有一個設置縮進的indent參數,如果想要每個層級之間縮進2個空格,則設置indent=2即可,示例如下
>>> pprint(data,indent=2)
#輸出結果為
>>> [ { 'fifth': '第五個值',
'first': '第一個值',
'fourth': '第四個值',
'second': '第二個值',
'third': '第三個值'},
{ 'fifth': ['frist', {'second': {'1': 2, '2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1', 'second': '2', 'third': '3'},
'third': {'first': '1', 'second': '2', 'third': '3'}}]
可以看見設置indent=2之后,pprint()將打印出的數據每個層級之間都縮進2個空格,這樣在平時打印工作中合理設置一個縮進空格可以更加直觀的閱讀每個層級。
2.設置寬度
pprint ()默認的輸出寬度為 80 個字符,可以通過設置 width 參數來更改輸出寬度。示例如下:
>>> pprint(data,width=40)
#輸出結果為
>>> [{'fifth': '第五個值',
'first': '第一個值',
'fourth': '第四個值',
'second': '第二個值',
'third': '第三個值'},
{'fifth': ['frist',
{'second': {'1': 2,
'2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1',
'second': '2',
'third': '3'},
'third': {'first': '1',
'second': '2',
'third': '3'}}]
設置輸出寬度后可以看到pprint()將打印的數據中每一個字典的鍵值都分行顯示了。
二、ic
ic模塊取之于icecream庫,它是一個python第三方庫,在使用去需要下載icecream庫并導入:
#pip安裝icecream庫
pip install icecream
#導入ic模塊
from icecream import ic
使用ic()方法打印對象數據時,它也是可以將數據進行格式化后打印出來最終的結果,數據格式化這一點和pprint()基本是相同的:
>>> ic(data)
#輸出結果為
>>> ic| data: [{'fifth': '第五個值',
'first': '第一個值',
'fourth': '第四個值',
'second': '第二個值',
'third': '第三個值'},
{'fifth': ['frist', {'second': {'1': 2, '2': '3'}}],
'first': [1, 2, 2, 3, 66, 765],
'fourth': [1, 2, 3, 4, 5],
'second': {'first': '1', 'second': '2', 'third': '3'},
'third': {'first': '1', 'second': '2', 'third': '3'}}]
通過使用ic()方法輸出后,不僅可以看到格式話的數據,并且它還自動將你輸出的變量也顯示了出來,這樣也可以延伸到輸出函數返回的值,具體如下:
#隨意定義一個函數
def func(one_data):
return one_data + 1
#給函數傳入一個值為3,并打印函數返回值
>>> ic(func(3))
#得到打印的結果
>>> ic| func(3): 4
這樣把輸出的函數和我們傳入的值也自動顯示出來了。
同時,以pycharm為例,使用ic()輸出值后,在控制臺會自動將你輸出的值轉變顏色,可以更加直觀的看到輸出的內容。