使用 Python 的 pprint庫格式化和輸出列表和字典的方法
這兩天, 田辛老師在進行幾個OpenCV的項目, 涉及到大量的dict以及l(fā)ist內容的輸出。 不多不說, python的print函數(shù)對于字典和列表的表示并不友好。 在此時,我們可以通過使用 Python 的標準庫 pprint 模塊,以干凈的格式輸出和顯示列表和字典等對象。pprint 是“pretty-print”的縮寫。
1 pprint的基本用法
普通print()
函數(shù)將列表和字典的元素打印在一行上,沒有換行符。例如,如下代碼:
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]}] 進程已結束,退出代碼0
這個輸出其實是相當不友好的。 這個list但凡長一點看起來就非常的麻煩, 那么這種情況下使用pprint
的方法就很方便:
pprint.pprint(point_lst)
輸出的結果是:
[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]},
{'Age': 20, 'Name': '張三', 'Points': [90, 10]},
{'Age': 30, 'Name': '李四', 'Points': [70, 30]}]進程已結束,退出代碼0
2 指定輸出寬度(字符數(shù)):
width
2.1 例子:
pprint.pprint(point_lst, width=40)
輸出結果是:
[{'Age': 40,
'Name': '田辛',
'Points': [80, 20]},
{'Age': 20,
'Name': '張三',
'Points': [90, 10]},
{'Age': 30,
'Name': '李四',
'Points': [70, 30]}]進程已結束,退出代碼0
2.2 特殊說明
如果你給的width值特別大, 比如400, 那么這個時候pprint
會和print
沒有區(qū)別。
pprint.pprint(point_lst, width=400)
輸出結果是:
[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]}, {'Age': 20, 'Name': '張三', 'Points': [90, 10]}, {'Age': 30, 'Name': '李四', 'Points': [70, 30]}]
進程已結束,退出代碼0
2.3 默認換行
默認情況下width
會自動檢查列表或者字典的元素是否適合輸出, 如果不適合的話,他們將被換行。
pprint.pprint(list(range(10))) pprint.pprint(list(range(1000000, 1000010)))
輸出結果是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1000000,
1000001,
1000002,
1000003,
1000004,
1000005,
1000006,
1000007,
1000008,
1000009]進程已結束,退出代碼0
2.4 緊湊換行:
compact=True
在默認換行中, 如果產(chǎn)生換行,列表的每個元素都會換行。 有的時候, 這種換行顯示會過長。 在這種情況下, 可以使用緊湊換行。
pprint.pprint(list(range(1000000, 1000020)), compact=True)
輸出結果是:
[1000000, 1000001, 1000002, 1000003, 1000004, 1000005, 1000006, 1000007,
1000008, 1000009, 1000010, 1000011, 1000012, 1000013, 1000014, 1000015,
1000016, 1000017, 1000018, 1000019]進程已結束,退出代碼0
3 指定要打印的元素的深度:
depth
您可以指定要輸出的元素的深度depth
作為參數(shù)。這里的深度就是嵌套數(shù)據(jù)的深度。
pprint.pprint(point_lst, depth=1) pprint.pprint(point_lst, depth=2)
輸出結果是:
[{...}, {...}, {...}]
[{'Age': 40, 'Name': '田辛', 'Points': [...]},
{'Age': 20, 'Name': '張三', 'Points': [...]},
{'Age': 30, 'Name': '李四', 'Points': [...]}]進程已結束,退出代碼0
查看上面的執(zhí)行結果, 你會發(fā)現(xiàn), 對于超出depth
深度的部分, 會直接用...
表示。
4 制定縮進的寬度:
indent
通過設定indent
可以指定縮進, 默認縮進為1, 讀者可以仔細看剛的例子中, 第二行會有一個字符的縮進哦。
pprint.pprint(point_lst, width=4, indent=4)
輸出結果是:
[ { 'Age': 40,
'Name': '田辛',
'Points': [ 80,
20]},
{ 'Age': 20,
'Name': '張三',
'Points': [ 90,
10]},
{ 'Age': 30,
'Name': '李四',
'Points': [ 70,
30]}]進程已結束,退出代碼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)
到此這篇關于如何使用 Python 的 pprint庫格式化和輸出列表和字典的文章就介紹到這了,更多相關Python pprint庫格式化和輸出列表和字典內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用matplotlib創(chuàng)建Gif動圖的實現(xiàn)
本文主要介紹了使用matplotlib創(chuàng)建Gif動圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04Python基于數(shù)列實現(xiàn)購物車程序過程詳解
這篇文章主要介紹了Python基于數(shù)列實現(xiàn)購物車程序過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06詳解Python并發(fā)編程之從性能角度來初探并發(fā)編程
這篇文章主要介紹了詳解Python并發(fā)編程之從性能角度來初探并發(fā)編程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08