1. 程式人生 > >5.8 pprint--美觀地打印數據

5.8 pprint--美觀地打印數據

stream 使用 eval() object ack pretty 針對 data clear

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--美觀地打印數據