使用 Python 的 pprint庫(kù)格式化和輸出列表和字典的方法
這兩天, 田辛老師在進(jìn)行幾個(gè)OpenCV的項(xiàng)目, 涉及到大量的dict以及l(fā)ist內(nèi)容的輸出。 不多不說(shuō), python的print函數(shù)對(duì)于字典和列表的表示并不友好。 在此時(shí),我們可以通過(guò)使用 Python 的標(biāo)準(zhǔn)庫(kù) pprint 模塊,以干凈的格式輸出和顯示列表和字典等對(duì)象。pprint 是“pretty-print”的縮寫(xiě)。
1 pprint的基本用法
普通print()函數(shù)將列表和字典的元素打印在一行上,沒(méi)有換行符。例如,如下代碼:
point_lst = [{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '張三', 'Age': 20, 'Points': [90, 10]},
{'Name': '李四', 'Age': 30, 'Points': [70, 30]}]
print(point_lst)[{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '張三', 'Age': 20, 'Points': [90, 10]}, {'Name': '李四', 'Age': 30, 'Points': [70, 30]}]
進(jìn)程已結(jié)束,退出代碼0這個(gè)輸出其實(shí)是相當(dāng)不友好的。 這個(gè)list但凡長(zhǎng)一點(diǎn)看起來(lái)就非常的麻煩, 那么這種情況下使用pprint的方法就很方便:
pprint.pprint(point_lst)
輸出的結(jié)果是:
[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]},
{'Age': 20, 'Name': '張三', 'Points': [90, 10]},
{'Age': 30, 'Name': '李四', 'Points': [70, 30]}]進(jìn)程已結(jié)束,退出代碼0
2 指定輸出寬度(字符數(shù)):
width
2.1 例子:
pprint.pprint(point_lst, width=40)
輸出結(jié)果是:
[{'Age': 40,
'Name': '田辛',
'Points': [80, 20]},
{'Age': 20,
'Name': '張三',
'Points': [90, 10]},
{'Age': 30,
'Name': '李四',
'Points': [70, 30]}]進(jìn)程已結(jié)束,退出代碼0
2.2 特殊說(shuō)明
如果你給的width值特別大, 比如400, 那么這個(gè)時(shí)候pprint會(huì)和print沒(méi)有區(qū)別。
pprint.pprint(point_lst, width=400)
輸出結(jié)果是:
[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]}, {'Age': 20, 'Name': '張三', 'Points': [90, 10]}, {'Age': 30, 'Name': '李四', 'Points': [70, 30]}]
進(jìn)程已結(jié)束,退出代碼0
2.3 默認(rèn)換行
默認(rèn)情況下width會(huì)自動(dòng)檢查列表或者字典的元素是否適合輸出, 如果不適合的話(huà),他們將被換行。
pprint.pprint(list(range(10))) pprint.pprint(list(range(1000000, 1000010)))
輸出結(jié)果是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1000000,
1000001,
1000002,
1000003,
1000004,
1000005,
1000006,
1000007,
1000008,
1000009]進(jìn)程已結(jié)束,退出代碼0
2.4 緊湊換行:
compact=True
在默認(rèn)換行中, 如果產(chǎn)生換行,列表的每個(gè)元素都會(huì)換行。 有的時(shí)候, 這種換行顯示會(huì)過(guò)長(zhǎng)。 在這種情況下, 可以使用緊湊換行。
pprint.pprint(list(range(1000000, 1000020)), compact=True)
輸出結(jié)果是:
[1000000, 1000001, 1000002, 1000003, 1000004, 1000005, 1000006, 1000007,
1000008, 1000009, 1000010, 1000011, 1000012, 1000013, 1000014, 1000015,
1000016, 1000017, 1000018, 1000019]進(jìn)程已結(jié)束,退出代碼0
3 指定要打印的元素的深度:
depth
您可以指定要輸出的元素的深度depth作為參數(shù)。這里的深度就是嵌套數(shù)據(jù)的深度。
pprint.pprint(point_lst, depth=1) pprint.pprint(point_lst, depth=2)
輸出結(jié)果是:
[{...}, {...}, {...}]
[{'Age': 40, 'Name': '田辛', 'Points': [...]},
{'Age': 20, 'Name': '張三', 'Points': [...]},
{'Age': 30, 'Name': '李四', 'Points': [...]}]進(jìn)程已結(jié)束,退出代碼0
查看上面的執(zhí)行結(jié)果, 你會(huì)發(fā)現(xiàn), 對(duì)于超出depth深度的部分, 會(huì)直接用...表示。
4 制定縮進(jìn)的寬度:
indent
通過(guò)設(shè)定indent可以指定縮進(jìn), 默認(rèn)縮進(jìn)為1, 讀者可以仔細(xì)看剛的例子中, 第二行會(huì)有一個(gè)字符的縮進(jìn)哦。
pprint.pprint(point_lst, width=4, indent=4)
輸出結(jié)果是:
[ { 'Age': 40,
'Name': '田辛',
'Points': [ 80,
20]},
{ 'Age': 20,
'Name': '張三',
'Points': [ 90,
10]},
{ 'Age': 30,
'Name': '李四',
'Points': [ 70,
30]}]進(jìn)程已結(jié)束,退出代碼0
5 全部代碼
老規(guī)矩, 全部代碼奉上:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
#-----------------------------------------------------------------------------
# --- TDOUYA STUDIOS ---
#-----------------------------------------------------------------------------
#
# @Project : di08-tdd-cdg-python-learning
# @File : pprint_learning.py
# @Author : tianxin.xp@gmail.com
# @Date : 2023/4/15 17:16
#
# pprint 示例程序
#
#--------------------------------------------------------------------------"""
import pprint
point_lst = [{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '張三', 'Age': 20, 'Points': [90, 10]},
{'Name': '李四', 'Age': 30, 'Points': [70, 30]}]
print(point_lst)
pprint.pprint(point_lst)
pprint.pprint(point_lst, width=40)
pprint.pprint(point_lst, width=400)
pprint.pprint(list(range(10)))
pprint.pprint(list(range(1000000, 1000010)))
pprint.pprint(list(range(1000000, 1000020)), compact=True)
pprint.pprint(point_lst, depth=1)
pprint.pprint(point_lst, depth=2)
pprint.pprint(point_lst, width=4, indent=4)到此這篇關(guān)于如何使用 Python 的 pprint庫(kù)格式化和輸出列表和字典的文章就介紹到這了,更多相關(guān)Python pprint庫(kù)格式化和輸出列表和字典內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python開(kāi)發(fā)中常用操作方法代碼匯總筆記
Python具有易學(xué)、易用、易擴(kuò)展、可移植性強(qiáng)等特點(diǎn),被廣泛應(yīng)用于數(shù)據(jù)分析、人工智能、Web開(kāi)發(fā)、自動(dòng)化測(cè)試等領(lǐng)域。Python在使用過(guò)程中也會(huì)遇到一些常見(jiàn)技術(shù)問(wèn)題,本文匯總Python開(kāi)發(fā)中實(shí)用操作方法代碼筆記。2023-06-06
Tensorflow中tf.ConfigProto()的用法詳解
今天小編就為大家分享一篇Tensorflow中tf.ConfigProto()的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python發(fā)送網(wǎng)絡(luò)請(qǐng)求(requests)
這篇文章主要介紹了Python發(fā)送網(wǎng)絡(luò)請(qǐng)求(requests),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python3連接SQLServer、Oracle、MySql的方法
這篇文章較詳細(xì)的給大家介紹了Python3連接SQLServer、Oracle、MySql的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-06-06
自動(dòng)在Windows中運(yùn)行Python腳本并定時(shí)觸發(fā)功能實(shí)現(xiàn)
講一下在Python中寫(xiě)好了一個(gè)腳本之后,怎么自動(dòng)雙擊一個(gè)程序自動(dòng)就跑起來(lái)。以及,怎么在Windows 10中設(shè)計(jì)定期定時(shí)觸發(fā)并跑腳本,有需要的朋友可以參考下2021-09-09
Python統(tǒng)計(jì)詞頻的幾種方法小結(jié)
本文主要介紹了Python統(tǒng)計(jì)詞頻的幾種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
使用Python實(shí)現(xiàn)操作mongodb詳解
這篇文章主要為大家詳細(xì)介紹了使用Python實(shí)現(xiàn)操作mongodb的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01

