Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容
楔子
我們用 MySQL 客戶端查詢數(shù)據(jù)的時(shí)候,是以下面這種格式顯示的:
內(nèi)容展示的非常漂亮,而 Python 有一個(gè)第三方模塊叫 prettytable,專門用來將數(shù)據(jù)以上面這種格式輸出,我們來看一下用法。
添加表頭、添加行、添加列
類似于數(shù)據(jù)庫中的表,由表頭(或者說字段名),以及每一行的內(nèi)容組成。
from?prettytable?import?PrettyTable #?傳入的?name、age、country?相當(dāng)于表頭 tb?=?PrettyTable(["name",?"age",?"country"]) #?調(diào)用?add_row?添加行記錄 tb.add_row(["Jack?Morrison",?49,?"America"]) tb.add_row(["Shimada?Genji",?35,?"Japan"]) tb.add_row(["Shimada?Hanzo",?38,?"Japan"]) tb.add_row(["Angela?Ziegler",?37,?"Switzerland"]) print(tb) """ +----------------+-----+-------------+ |??????name??????|?age?|???country???| +----------------+-----+-------------+ |?Jack?Morrison??|??49?|???America???| |?Shimada?Genji??|??35?|????Japan????| |?Shimada?Hanzo??|??38?|????Japan????| |?Angela?Ziegler?|??37?|?Switzerland?| +----------------+-----+-------------+ """
如果在編寫的過程中,我們需要臨時(shí)添加一列,prettytable 也是支持的。
from?prettytable?import?PrettyTable tb?=?PrettyTable(["name",?"age",?"country"]) tb.add_row(["Jack?Morrison",?49,?"America"]) tb.add_row(["Shimada?Genji",?35,?"Japan"]) tb.add_row(["Shimada?Hanzo",?38,?"Japan"]) tb.add_row(["Angela?Ziegler",?37,?"Switzerland"]) #?調(diào)用?add_column?添加一列 tb.add_column("gender", ??????????????["male",?"male",?"male",?"female"]) print(tb) """ +----------------+-----+-------------+--------+ |??????name??????|?age?|???country???|?gender?| +----------------+-----+-------------+--------+ |?Jack?Morrison??|??49?|???America???|??male??| |?Shimada?Genji??|??35?|????Japan????|??male??| |?Shimada?Hanzo??|??38?|????Japan????|??male??| |?Angela?Ziegler?|??37?|?Switzerland?|?female?| +----------------+-----+-------------+--------+ """
輸出內(nèi)容是不是和 MySQL數(shù)據(jù)庫類似呢。
此外 prettytable 還支持從 csv、數(shù)據(jù)庫、html 等數(shù)據(jù)源中導(dǎo)入數(shù)據(jù),但說實(shí)話,從數(shù)據(jù)源讀取數(shù)據(jù)我們一般使用 pandas,并且還會(huì)伴隨著數(shù)據(jù)處理。而使用 prettytable 只是為了讓程序中產(chǎn)生的信息,能夠以結(jié)構(gòu)化的形式打印,很少會(huì)從文件或數(shù)據(jù)庫里面讀數(shù)據(jù)。
輸出指定行、指定列
我們也可以輸出 table 的指定行、指定列。
from?prettytable?import?PrettyTable tb?=?PrettyTable(["name",?"age",?"country",?"gender"]) tb.add_row(["Jack?Morrison",?49,?"America",?"male"]) tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"]) tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"]) tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"]) #?只輸出?name?和?age?兩列 #?start?和?end?表示開始和結(jié)束的行數(shù)(從?0?開始) print(tb.get_string(fields=["name",?"age"], ????????????????????start=1,?end=3)) """ +---------------+-----+ |??????name?????|?age?| +---------------+-----+ |?Shimada?Genji?|??35?| |?Shimada?Hanzo?|??38?| +---------------+-----+ """ #?此外可以用來進(jìn)行排序 print(tb.get_string(sortby="age",?reversesort=True)) """ +----------------+-----+-------------+--------+ |??????name??????|?age?|???country???|?gender?| +----------------+-----+-------------+--------+ |?Jack?Morrison??|??49?|???America???|??male??| |?Shimada?Hanzo??|??38?|????Japan????|??male??| |?Angela?Ziegler?|??37?|?Switzerland?|?female?| |?Shimada?Genji??|??35?|????Japan????|??male??| +----------------+-----+-------------+--------+ """
設(shè)置表格樣式
表格也支持幾種不同的樣式,供我們選擇。
from?prettytable?import?* tb?=?PrettyTable(["name",?"age",?"country",?"gender"]) tb.add_row(["Jack?Morrison",?49,?"America",?"male"]) tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"]) tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"]) tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"]) #?樣式支持以下幾種: #?DEFAULT、MSWORD_FRIENDLY、PLAIN_COLUMNS、RANDOM #?之前的樣式就是?DEFAULT tb.set_style(MSWORD_FRIENDLY) print(tb) """ |??????name??????|?age?|???country???|?gender?| |?Jack?Morrison??|??49?|???America???|??male??| |?Shimada?Genji??|??35?|????Japan????|??male??| |?Shimada?Hanzo??|??38?|????Japan????|??male??| |?Angela?Ziegler?|??37?|?Switzerland?|?female?| """ tb.set_style(PLAIN_COLUMNS) print(tb) """ ?????name?????????????age??????????country??????????gender???????? Jack?Morrison??????????49??????????America???????????male????????? Shimada?Genji??????????35???????????Japan????????????male????????? Shimada?Hanzo??????????38???????????Japan????????????male????????? Angela?Ziegler?????????37????????Switzerland????????female????? """ tb.set_style(RANDOM) print(tb) """ ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; .????????name??????????????age???????????country???????????gender?????. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; .???Jack?Morrison???????????49???????????America????????????male??????. .???Shimada?Genji???????????35????????????Japan?????????????male??????. .???Shimada?Hanzo???????????38????????????Japan?????????????male??????. .???Angela?Ziegler??????????37?????????Switzerland?????????female?????. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; """
說實(shí)話,還是默認(rèn)的 DEFAULT 樣式最好看。
設(shè)置對(duì)齊方式
from?prettytable?import?* tb?=?PrettyTable(["name",?"age",?"country",?"gender"]) tb.add_row(["Jack?Morrison",?49,?"America",?"male"]) tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"]) tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"]) tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"]) #?l?代表左對(duì)齊,c?代表居中,r?代表右對(duì)齊 #?默認(rèn)居中 tb.align["name"]?=?"l" tb.align["age"]?=?"c" tb.align["country"]?=?"r" print(tb) """ +----------------+-----+-------------+--------+ |?name???????????|?age?|?????country?|?gender?| +----------------+-----+-------------+--------+ |?Jack?Morrison??|??49?|?????America?|??male??| |?Shimada?Genji??|??35?|???????Japan?|??male??| |?Shimada?Hanzo??|??38?|???????Japan?|??male??| |?Angela?Ziegler?|??37?|?Switzerland?|?female?| +----------------+-----+-------------+--------+ """
設(shè)置邊框樣式
在 PrettyTable 中,邊框由三個(gè)部分組成:橫邊框,豎邊框,和邊框連接符,我們都可以修改。
from?prettytable?import?* tb?=?PrettyTable(["name",?"age",?"country",?"gender"]) tb.add_row(["Jack?Morrison",?49,?"America",?"male"]) tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"]) tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"]) tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"]) #?是否顯示邊框,默認(rèn)為True tb.border?=?True #?橫邊框 tb.horizontal_char?=?'^' #?豎邊框 tb.vertical_char?=?'>' #?邊框連接符 tb.junction_char='~' print(tb) """ ~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~ >??????name??????>?age?>???country???>?gender?> ~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~ >?Jack?Morrison??>??49?>???America???>??male??> >?Shimada?Genji??>??35?>????Japan????>??male??> >?Shimada?Hanzo??>??38?>????Japan????>??male??> >?Angela?Ziegler?>??37?>?Switzerland?>?female?> ~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~ """
到此這篇關(guān)于Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容的文章就介紹到這了,更多相關(guān)Python prettytable格式化輸出內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于socket實(shí)現(xiàn)簡單的即時(shí)通訊功能示例
這篇文章主要介紹了Python基于socket實(shí)現(xiàn)簡單的即時(shí)通訊功能,涉及Python基于socket模塊實(shí)現(xiàn)tcp通信客戶端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下2018-01-01python中關(guān)于property的最詳細(xì)使用方法
這篇文章主要介紹了python中關(guān)于property的最詳細(xì)使用方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04基于python實(shí)現(xiàn)檢索標(biāo)記敏感詞并輸出
這篇文章主要介紹了基于python實(shí)現(xiàn)檢索敏感詞并輸出,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Pytorch生成隨機(jī)數(shù)Tensor的方法匯總
這篇文章主要介紹了Pytorch生成隨機(jī)數(shù)Tensor的方法匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09pytorch實(shí)現(xiàn)用CNN和LSTM對(duì)文本進(jìn)行分類方式
今天小編就為大家分享一篇pytorch實(shí)現(xiàn)用CNN和LSTM對(duì)文本進(jìn)行分類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python利用pytesseract 實(shí)現(xiàn)本地識(shí)別圖片文字
這篇文章主要介紹了python利用pytesseract 實(shí)現(xiàn)本地識(shí)別圖片文字,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12