5.8 pprint--美觀地打印數據
pprint模塊提供了一個美觀地打印Python數據結構的方式。假設是要格式化的數據結構裏包括了非基本類型的數據,有可能這樣的數據類型不會被載入。比方數據類型是文件、網絡socket、類等。本模塊格式化時,盡可能保持一個對象一行表示。而且當超過同意寬度時也會自己主動換行表示。全部字典數據類型,都會先按鍵來排序。然後再進行格式化輸出。
class pprint.PrettyPrinter(indent=1, width=80, depth=None, stream=None, *, compact=False)
構造一個打印實例PrettyPrinter。這個構造函數須要好幾個參數來配置打印參數。
能夠通過參數stream來設置流輸出對象,流輸出對象要實現write()的文件協議。假設沒有指定流輸出對象,默認是輸出到sys.stdout。每行遞歸縮進的寬度是通過indent來設置,默認設置為1。參數width是表示每行的寬度。假設超過一行的寬度就會換行輸出。參數depth是表示復合對象輸出的層次深度,默認是沒有限制,全部層次的對象都輸出。參數compact是表示換行時下一行是否輸出內容,還是跳過。
樣例:
#python 3.4
import pprint
stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
stuff.insert(0, stuff[:])
print(stuff, ‘\n‘)
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(stuff)
結果輸出例如以下:
[[‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘], ‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
[ [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘],
‘spam‘,
‘eggs‘,
‘lumberjack‘,
‘knights‘,
‘ni‘]
pprint.pformat(object, indent=1, width=80, depth=None, *, compact=False)
把object對象格式化為字符串返回。其他參數與上面的函數一樣。
樣例:
#python 3.4
import pprint
stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
stuff.insert(0, stuff[:])
str = pprint.pformat(stuff)
print(str)
結果輸出例如以下:
[[‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘],
‘spam‘,
‘eggs‘,
‘lumberjack‘,
‘knights‘,
‘ni‘]
pprint.pprint(object, stream=None, indent=1, width=80, depth=None, *, compact=False)
打印全部格式化的對象到流對象stream裏,並加入新換行符。假設stream為空,就使用默認的sys.stdout。其他參數與上面函數一樣。
樣例:
#python 3.4
import pprint
stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
stuff.insert(0, stuff[:])
str = pprint.pprint(stuff)
結果輸出例如以下:
[[‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘],
‘spam‘,
‘eggs‘,
‘lumberjack‘,
‘knights‘,
‘ni‘]
pprint.isreadable(object)
推斷對象object格式化表示的字符串是否可讀。或者能使用eval()函數運行。
假設可讀的返回True。
假設對象是遞歸的。則返回False。
樣例:
#python 3.4
import pprint
stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
stuff.insert(0, stuff[:])
print(pprint.isreadable(stuff))
結果輸出例如以下:
True
pprint.isrecursive(object)
推斷對象object是否遞歸表示。
樣例:
#python 3.4
import pprint
stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
stuff.insert(0, stuff[:])
print(pprint.isrecursive(stuff))
結果輸出例如以下:
False
pprint.saferepr(object)
針對遞歸對象進行顯示時提示遞歸字符串。
樣例:
#python 3.4
import pprint
stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
stuff.insert(0, stuff)
print(pprint.isrecursive(stuff))
print(pprint.saferepr(stuff))
結果輸出例如以下:
True
[<Recursion on list with id=47354104>, ‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
PrettyPrinter類主要有以下方法:
PrettyPrinter.pformat(object)
PrettyPrinter.pprint(object)
PrettyPrinter.isreadable(object)
PrettyPrinter.isrecursive(object)
PrettyPrinter.format(object, context, maxlevels, level)
這些方法跟上面的函數使用是一樣的。
蔡軍生 QQ:9073204 深圳
5.8 pprint--美觀地打印數據