愛伊米

太漂亮了 ! 輸出好看的表格,就用這個 Python 庫!

#1。 前言

最近在用 Python 寫一個小工具,這個工具主要就是用來管理各種資源的資訊,比如阿里雲的 ECS 等資訊,因為我工作的電腦使用的是 LINUX,所以就想著用 python 寫一個命令列的管理工具,基本的功能就是同步阿里雲的資源的資訊到資料庫,然後可以使用命令列查詢。

因為資訊是展現在命令列中的,眾所周知,命令列展現複雜的文字看起來著實累人,於是就想著能像表格那樣展示,那看起來就舒服多了。

prettytable

庫就是這麼一個工具,prettytable 可以打印出美觀的表格,並且對中文支援相當好(如果有試圖自己實現打印表格,你就應該知道處理中文是多麼的麻煩)

#2。 安裝

prettytable 並非 python 的內建庫,透過 即可安裝。

#3。 示例

我們先來看一個示例:

以上示例執行結果如下:

在以上的示例中,我們透過匯入了表格庫。例項化了一個表格庫,並且添加了為表頭,如果沒有新增表頭,那麼會以預設的Field+編號顯示,例如:

所以為更直觀看出每一列的意義,還是要新增表頭的。

#4。 新增資料

prettytable提供了多種的新增資料的方式,最常用的應該就是按行按列新增資料了。

按行新增資料 table。add_row

在上面簡單的示例中,我們就是按行新增資料的。

新增的資料必須要是列表的形式,而且資料的列表長度要和表頭的長度一樣。在實際的使用中,我們應該要關注到新增的資料是否和表頭對應,這一點很重要。

按列新增資料 table。add_column()

看下面的示例:

執行結果如下:

以上示例中,我們透過來按列新增資料,按列新增資料不需要在例項化表格的時候制定表頭,它的表頭是在新增列的時候指定的。

這一行程式碼為例,指定了這個列的表頭名為“專案”,為列的值,同樣為列表。

從csv檔案新增資料

PrettyTable不僅提供了手動按行按列新增資料,也支援直接從csv檔案中讀取資料。

如果要讀取cvs檔案資料,必須要先匯入,否則無法執行。上面的示例執行結果如下:

PS:csv 檔案不能透過 xls 直接重新命名得到,會報錯。如果是 xls 檔案,請用另存為 csv 獲得 csv 檔案

從sql查詢值新增

從資料庫查詢出來的資料可以直接匯入到表格列印,下面的例子使用了,如果使用的是mysql也是一樣的,只要能查詢到資料就能匯入到表格中。

執行結果如下:

從HTML匯入資料

支援從html的表格中匯入,請看下面這個例子:

執行結果如下:

如上示例中,我們可以匯入html的表格,但是不一樣的地方是語句,使用html表格匯入資料的時候print的必須是列表中的第一個元素,否則有可能會報這樣的錯誤。

這是因為並不是PrettyTable物件,而是包含單個PrettyTable物件的列表,它透過解析html而來,所以無法直接列印,而需要列印

#5。 表格輸出格式

正如支援多種輸入一樣,表格的輸出也支援多種格式,我們在上面中的例子中已經使用了print的方式輸出,這是一種常用的輸出方式。

print

直接透過打印出表格。這種方式打印出的表格會帶邊框。

輸出HTML格式的表格

可以打印出html標籤的表格。

在上面的例子中,使用會打印出如下結果:

#6。 選擇性輸出

prettytable在建立表格之後,你依然可以有選擇的輸出某些特定的行。

輸出指定的列

可以輸出指定的列

輸出前兩行

透過的可以打印出指定的列,當然和引數讓我可以自由控制顯示區間。當然區間中包含不包含,是不是很熟悉這樣的用法?

根據輸出指定行列的功能,我們可以同時指定行和列來輸出,這裡就不說明了。

將表格切片

從上面的輸出區間,我們做一個大膽的假設,既然區間包含不包含這種規則和切片的一樣,我們可以不可透過切片來生成一個新的表格然後將其列印。

事實上是可以的。

如上程式碼段中,我們就可以打印出0到1行共2行的表格,python的切片功能異常強大,配合切片我們可以自由的輸入任意的行。

輸出排序

有時候我們需要對輸出的表格進行排序,使用就可以對錶格進行排序,其中指定了是否倒序排序,預設為,即預設正序列排序。

指定了排序的欄位。

#7。 表格的樣式

內建樣式

透過可以設定表格樣式,prettytable內建了多種的樣式個人覺得,, 這三種樣式看起來比較清爽,在終端下顯示錶格本來看起就很累,再加上一下花裡胡哨的東西看起來就更累。

除了以上推薦的三種樣式以外,還有一種樣式不得不說,那就是,這是一種隨機的樣式,每一次列印都會在內建的樣式中隨機選擇一個,比較好玩。

具體內建了幾種樣式,請各位參考官網完整自己嘗試輸出看看。

自定義樣式

除了內建的樣式以外,PrettyTable也提供了使用者自定義,例如對齊方式,數字輸出格式,邊框連線符等等

設定對齊方式

提供了使用者設定對齊的方式,值有,,方便代表左對齊,右對齊和居中 如果不設定,預設居中對齊。

控制邊框樣式

在PrettyTable中,邊框由三個部分組成,橫邊框,豎邊框,和邊框連線符(橫豎交叉的連結符號)

如下示例:

控制邊框連線符

控制橫邊框符號

控制豎邊框符號

上例執行如下:

以上簡單介紹了表格常用的一些樣式設定。更具體的方法可引數請參考官方網站:

https://github。com/jazzband/prettytable

作者:Linuxops