Python 輸出漂亮的表格教程_第1頁(yè)
Python 輸出漂亮的表格教程_第2頁(yè)
Python 輸出漂亮的表格教程_第3頁(yè)
Python 輸出漂亮的表格教程_第4頁(yè)
Python 輸出漂亮的表格教程_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Python輸出漂亮的表格.前言最近在用python寫(xiě)一個(gè)小工具,這個(gè)工具主要就是用來(lái)管理各種資源的信息,比如阿里云的ECS等信息,因?yàn)槲夜ぷ鞯碾娔X使用的INUX,所以就想著用Python寫(xiě)一個(gè)命令行的管理工具,基本的功能就是同步阿里云的資源的信息到數(shù)據(jù)庫(kù),然后可以使用命令行查詢(xún)。因?yàn)樾畔⑹钦宫F(xiàn)在命令行中的,眾所周知,命令行展現(xiàn)復(fù)雜的文本看起來(lái)著實(shí)累人,于是就想著能像表格那樣展示,那看起來(lái)就舒服多了。prettytable庫(kù)就是這么一個(gè)工具,prettytable可以打印出美觀的表格,并且對(duì)中文支持相當(dāng)好(如果有試圖自己實(shí)現(xiàn)打印表格,你就應(yīng)該知道處理中文是多么的麻煩)說(shuō)明:本文使用Markdo

2、wn語(yǔ)法編寫(xiě),為了展示方便,以及復(fù)制方便,所以本文中沒(méi)有使用截圖,因?yàn)楦袷娇刂频膯?wèn)題,文章中的運(yùn)行結(jié)果會(huì)出現(xiàn)一些分割線的偏移,在終端中呈現(xiàn)并此問(wèn)題,請(qǐng)各位手動(dòng)去操作驗(yàn)證。.安裝prettytable并非python的內(nèi)置庫(kù),通過(guò)pipinstallprettytable即可安裝。.一個(gè)小示例我們先來(lái)看一個(gè)示例:#!/usr/bin/python#*coding:utf-8*importsysfromprettytableimportPrettyTablereload(sys)號(hào)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)編,ip地址)01,172.16.0.1)02,172.16.0.2)03,172.16.0.3)0

3、4,172.16.0.4)05,172.16.0.5)06,172.16.0.6)07,172.16.0.7)08,172.16.0.8)09,172.16.0.9)sys.setdefaultencoding(utf8)table=PrettyTable(編號(hào)table.add_row(T,server01,table.add_row(2,server02,table.add_row(3,server03,table.add_row(4,server04,table.add_row(5,server05,table.add_row(6,server06,table.add_row(7,ser

4、ver07,table.add_row(8,server08,table.add_row(9,server09,print(table)以上示例運(yùn)行結(jié)果如下:linuxopsdeepin:$pythonp.py+111|編號(hào)|云編號(hào)+111|1|server01|月服|2|server02|月服|3|server03|服|4|server04|月服+I+務(wù)務(wù)務(wù)務(wù)名稱(chēng)IIP地址I器01門(mén)72.16.0.1I器02|172.16.0.2|器03|172.16.0.3|器04|172.16.0.4|56789|server05server06server07server08server09務(wù)務(wù)務(wù)務(wù)務(wù)

5、172.16.0.5172.16.0.6172.16.0.7172.16.0.8172.16.0.9+111在以上的示例中,我們通過(guò)form導(dǎo)入了表格庫(kù)。table實(shí)例化了一個(gè)表格庫(kù),并且添加了編號(hào),云編號(hào),名稱(chēng),IP地址為表頭,如果沒(méi)有添加表頭,那么會(huì)以默認(rèn)的Field+編號(hào)顯示,例如:+|Field1|Field2|Field3|Field4+所以為更直觀看出每一列的意義,還是要添加表頭的。.添加數(shù)據(jù)prettytable提供了多種的添加數(shù)據(jù)的方式,最常用的應(yīng)該就是按行按列添加數(shù)據(jù)了。A、按行添加數(shù)據(jù)table.add_row在上面簡(jiǎn)單的示例中,我們就是按行添加數(shù)據(jù)的。添加的數(shù)據(jù)必須要是列

6、表的形式,而且數(shù)據(jù)的列表長(zhǎng)度要和表頭的長(zhǎng)度一樣。在實(shí)際的使用中,我們應(yīng)該要關(guān)注到添加的數(shù)據(jù)是否和表頭對(duì)應(yīng),這一點(diǎn)很重要。B、按列添加數(shù)據(jù)table.add_column()看下面的示例:#!/usr/bin/python#*coding:utf-8*importsysfromprettytableimportPrettyTablereload(sys)sys.setdefaultencoding(utf8)table=PrettyTable。稱(chēng),IP地址)01,172.16.0.1)table.add_column(項(xiàng)目,編號(hào),云編號(hào),名table.add_column(值,T,server0

7、1,服務(wù)器print(table)運(yùn)行結(jié)果如下:TOC o 1-5 h z+|index|項(xiàng)目|值|+|1|編號(hào)|1|2|云編號(hào)|server01|I3I名稱(chēng)I服務(wù)器01II4IIP地址門(mén)72.16.0.1I+以上示例中,我們通過(guò)add_column來(lái)按列添加數(shù)據(jù),按列添加數(shù)據(jù)不需要在實(shí)例化表格的時(shí)候制定表頭,它的表頭是在添加列的時(shí)候指定的。table.add_column(項(xiàng)目,編號(hào),云編號(hào),名稱(chēng),IP地址)這一行代碼為例,項(xiàng)目指定了這個(gè)列的表頭名為項(xiàng)目,編號(hào),云編號(hào),名稱(chēng),IP地址為列的值,同樣為列表。C、從csv文件添加數(shù)據(jù)PrettyTable不僅提供了手動(dòng)按行按列添加數(shù)據(jù),也支持直接

8、fev文件中讀取數(shù)據(jù)。#!/usr/bin/python#*coding:utf-8*importsysfromprettytableimportPrettyTablefromprettytableimportfrom_csvreload(sys)sys.setdefaultencoding(utf8)table=PrettyTable。fp=open(res.csv,r)table=from_csv(fp)print(table)fp.close()123456789server01server02server03server04server05server06server07server0

9、8server09務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)12oO172.16.0.1172.16.0.2172.16.0.3172.16.0.4172.16.0.5172.16.0.6172.16.0.7172.16.0.8172.16.0.9如果要讀取cvs文件數(shù)據(jù),必須要先導(dǎo)入from_csv,否則無(wú)法運(yùn)行。上面的示例運(yùn)行結(jié)果如下:+1編號(hào)|云編號(hào)|名稱(chēng)|IP地址+csv文件不能通過(guò)xls直接重命名得到,會(huì)報(bào)錯(cuò)。如果是xls文件,請(qǐng)用另存為csv獲得csv文件D、從sql查詢(xún)值添加從數(shù)據(jù)庫(kù)查詢(xún)出來(lái)的數(shù)據(jù)可以直接導(dǎo)入到表格打印,下面的例子使用了sqlite3,如果使用的是mysql也是一樣的,只要能查詢(xún)到數(shù)據(jù)就

10、能導(dǎo)入到表格中#!/usr/bin/python#*coding:utf-8*importsysfromprettytableimportPrettyTablefromprettytableimportfrom_db_cursorimportsqlite3reload(sys)sys.setdefaultencoding(utf8)conn=sqlite3.connect(/tmp/aliyun.db)cur=conn.cursor()cur.execute(SELECT*FROMres)table=from_db_cursor(cur)print(table)運(yùn)行結(jié)果如下:+|編號(hào)|云編號(hào)|

11、名稱(chēng)|IP地址|+123456789server01server02server03server04server05server06server07server08server09艮艮艮艮艮艮艮艮艮-一-一-一-一-一-一-一-一-一務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)123456789OOOOOOOOO172.16.0.1172.16.0.2172.16.0.3172.16.0.4172.16.0.5172.16.0.6172.16.0.7172.16.0.8172.16.0.9+E、從HTML導(dǎo)入數(shù)據(jù)支持從html的表格中導(dǎo)入,請(qǐng)看下面這個(gè)例子:#E/usr/bin/pythiDnflcoding:utf-

12、S1*5*import575fromprettytableimportPrettyTablefromprettytableimportfroni_htnilreload(sys)5y5.5etdefaultencoding(utf-8)htrnl_5tring=,1th編號(hào)th-J廿3云編號(hào)八4th名/1h)廿二工麗址服務(wù)器皿4Hbi72.i6.e.i服務(wù)器代172.16.e,25血table=fromhtml(titmlstring)print(tableO運(yùn)行結(jié)果如下:TOC o 1-5 h z+IP地址|172.16.0.1|1172.16.0.21|編號(hào)|云編號(hào)|名稱(chēng)|+|1|serv

13、er01|服務(wù)器01|2|server02|服務(wù)器02+如上示例中,我們可以導(dǎo)入html的表格,但是不一樣的地方是print語(yǔ)句,使用html表格導(dǎo)入數(shù)據(jù)的時(shí)候print的必須是列表中的第一個(gè)元素,否則有可能會(huì)報(bào)這樣的錯(cuò)誤。這是因?yàn)閠able并不是PrettyTable對(duì)象,而是包含單個(gè)PrettyTable對(duì)象的列表,它通過(guò)解析html而來(lái),所以無(wú)法直接打印table,而需要打印table05.表格輸出格式正如支持多種輸入一樣,表格的輸出也支持多種格式,我們?cè)谏厦嬷械睦又幸呀?jīng)使用了print的方式輸出,這是一種常用的輸出方式。A、print直接通過(guò)print打印出表格。這種方式打印出的表格

14、會(huì)帶邊框。B、輸出HTML格式的表格print(table.get_html_string(可)以打印出html標(biāo)簽的表格。在上面的例子中,使用print(table.get_html_string(后打印出如下結(jié)果:tables編號(hào)七云編號(hào)。七th)名稱(chēng)/thcthA工P地址ctdlserver01艮務(wù)器毗ctd172.LS.0.lctd2ctd5erver92td)服務(wù)器62btebi72.ifr.e_2.選擇性輸出prettytable在創(chuàng)建表格之后,你依然可以有選擇的輸出某些特定的行.A、輸出指定的列printtable.get_string(fields=Sz#,IP地址)可以輸出指

15、定的列B、輸出前兩行通過(guò)print(table.get_string(start=0,end=2)可以打印出指定的列,當(dāng)然start和end參數(shù)讓我可以自由控制顯示區(qū)間。當(dāng)然區(qū)間中包含start不包含end,是不是很熟悉這樣的用法?根據(jù)輸出指定行列的功能,我們可以同時(shí)指定行和列來(lái)輸出,這里就不說(shuō)明了。C、將表格切片從上面的輸出區(qū)間,我們做一個(gè)大膽的假設(shè),既然區(qū)間包含tart不包含end這種規(guī)則和切片的一樣,我們可以不可通過(guò)切片來(lái)生成一個(gè)新的表格然后將其打印。事實(shí)上是可以的。new_table=table0:2print(new_table)如上代碼段中,我們就可以打印出0到1行共2行的表格,p

16、ython的切片功能異常強(qiáng)大,配合切片我們可以自由的輸入任意的行。D、輸出排序有時(shí)候我們需要對(duì)輸出的表格進(jìn)行排序,使用printtable.get_string(sortby=編號(hào),reversesort=True)就可以對(duì)表格進(jìn)行排序,其中reversesort指定了是否倒序排序,默認(rèn)為False,即默認(rèn)正序列排序。sortby指定了排序的字段。.表格的樣式A、內(nèi)置樣式通過(guò)set_style(H以設(shè)置表格樣式,prettytable內(nèi)置了多種的樣式個(gè)人覺(jué)得MSWORD_FRIENDLY,PLAIN_COLUMNS,DEFAULT這三種樣式看起來(lái)比較清爽,在終端下顯示表格本來(lái)看起就很累,再加上

17、一下花里胡哨的東西看起來(lái)就更累。除了以上推薦的三種樣式以外,還有一種樣式不得不說(shuō),那就是RANDOM,這是一種隨機(jī)的樣式,每一次打印都會(huì)在內(nèi)置的樣式中隨機(jī)選擇一個(gè),比較好玩。具體內(nèi)置了幾種樣式,請(qǐng)各位參考官網(wǎng)完整自己嘗試輸出看看。#!/usr/bin/python#*coding:utf-8*importsysimportPrettyTableimportMSWORD_FRIENDLYimportPLAIN_COLUMNSimportRANDOMimportDEFAULTfromprettytablefromprettytablefromprettytablefromprettytablefr

18、omprettytablereload(sys)sys.setdefaultencoding(utf8)名稱(chēng),IP地址)01,172.16.0.1)03,172.16.0.3)02,172.16.0.2)09,172.16.0.9)04,172.16.0.4)05,172.16.0.5)06,172.16.0.6)08,172.16.0.8)07,172.16.0.7)艮艮艮艮艮艮艮艮艮-一-一-一-一-一-一-一-一-一務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)口古口古口古口古口古口古table=PrettyTable(編號(hào),table.add_row(1,server01,table.add_row(3,serv

19、er03,table.add_row(2,server02,table.add_row(9,server09,table.add_row(4,server04,table.add_row(5,server05,table.add_row(6,server06,table.add_row(8,server08,table.add_row(7,server07,table.setstyle(DEFAULT)print(table)B、自定義樣式除了內(nèi)置的樣式以外,PrettyTable也提供了用戶(hù)自定義,例如對(duì)齊方式,數(shù)字輸出格式,邊框連接符等等C、設(shè)置對(duì)齊方式align提供了用戶(hù)設(shè)置對(duì)齊的方式,

20、值揖,r,c方便代表左對(duì)齊,右對(duì)齊和居中如果不設(shè)置,默認(rèn)居中對(duì)齊。D、控制邊框樣式在PrettyTable中,邊框由三個(gè)部分組成,橫邊框,豎邊框,和邊框連接符(橫豎交叉的鏈接符號(hào))如下示例:#!/usr/bin/python#*coding:utf-8*importsysfromprettytableimportPrettyTablereload(sys)sys.setdefaultencoding(utf8)名稱(chēng),IP地址)01,172.16.0.1)03,172.16.0.3)02,172.16.0.2)09,172.16.0.9)04,172.16.0.4)05,172.16.0.5)06,172.16.0.6)08,172.16.0.8)07,172.16.0.7)艮艮艮艮艮艮艮艮艮-一-一-一-一-一-一-一-一-一務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)務(wù)口古口古口古口古口古口古table=PrettyTable(編號(hào)table.add_row(1,server01,table.add_row(3,server0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論