一、簡介
PrettyTable 是python中的一個第三方庫,可用來生成美觀的ASCII格式的表格。
二、安裝
pip install prettytable
三、導入
from prettytable import PrettyTable
四、使用
# 創(chuàng)建表:
tb = pt.PrettyTable()
# 按行添加數(shù)據(jù):
tb.add_row(<llist>)
# 按列添加數(shù)據(jù):
tb.add_column(<llist>)
五、示例
(1)按行添加數(shù)據(jù)
import prettytable as pt
tb = pt.PrettyTable(['班級', '姓名', '性別', '科目', '成績'])
# tb = pt.PrettyTable()
# tb.field_names = ['班級', '姓名', '性別', '科目', '成績']
tb.add_row(['15級1班', '小明', '男', '語文', 120])
tb.add_row(['15級2班', '小紅', '女', '英語', 98])
tb.add_row(['16級1班', '張三', '男', '數(shù)學', 143])
tb.add_row(['17級6班', '李四', '男', '數(shù)學', 130])
print(tb)

按行添加數(shù)據(jù)
(2)按列添加數(shù)據(jù)
import prettytable as pt
tb = pt.PrettyTable()
tb.add_column('班級', ['15級1班', '15級2班', '16級1班', '17級6班'])
tb.add_column('姓名', ['小明', '小紅', '張三', '李四'])
tb.add_column('性別', ['男', '女', '男', '男'])
tb.add_column('科目', ['語文', '英語', '數(shù)學', '數(shù)學'])
tb.add_column('成績', [120, 98, 143, 130])
print(tb)

按列添加數(shù)據(jù)
(3)注意
這里
tb = pt.PrettyTable(["班級", "姓名", "性別", "科目", "成績"])
相當于
tb = pt.PrettyTable()
tb.field_names = ["班級", "姓名", "性別", "科目", "成績"]
如果沒有添加表頭,那么會以默認的Field+編號顯示,編號從1開始。

六、從csv文件添加數(shù)據(jù)
PrettyTable不僅提供了手動按行按列添加數(shù)據(jù),也支持直接從csv文件中讀取數(shù)據(jù)。
import prettytable as pt
with open('res.csv', 'r') as f:
table = pt.from_csv(fp)
print(table)
注意:csv文件不能通過xls直接重命名得到,會報錯。如果是xls文件,請用另存為csv獲得csv文件
七、從sql查詢值添加
從數(shù)據(jù)庫查詢出來的數(shù)據(jù)以表格形式打印,下例使用的是sqlite3,mysql也支持。
import sqlite3
from prettytable import from_db_cursor
conn = sqlite3.connect("/sqlite.db")
cur = conn.cursor()
cur.execute("SELECT * FROM myDatabase")
table = from_db_cursor(cur)
print(table)
八、從HTML導入數(shù)據(jù)
from prettytable import from_html
html_string='''<table>
<tr>
<th>code</th>
<th>uuid</th>
<th>name</th>
<th>IP</th>
</tr>
<tr>
<td>1</td>
<td>server01</td>
<td>server-01</td>
<td>192.168.100.1</td>
</tr>
<tr>
<td>2</td>
<td>server02</td>
<td>server-02</td>
<td>192.168.100.2</td>
</tr>
</table>'''
table = from_html(html_string)
print(table[0])
導入 html 的表格,但是不一樣的地方是 print 語句,使用 html 表格導入數(shù)據(jù)的時候 print 的必須是列表中的第一個元素,否則有可能會報[<prettytable.PrettyTable object at 0x7fa87feba590>]這樣的錯誤。
九、選擇性輸出
有選擇的輸出某些特定的行。
## 輸出指定的列
print(table.get_string(fields=["Area", "Population"]))
## 輸出指定的行,start 和 end 參數(shù)可以自由控制顯示區(qū)間
print(table.get_string(start = 0, end = 2))
## 將表格切片
new_table = table[0:2]
print(new_table)
## 輸出排序
print(table.get_string(sortby="City name", reversesort=True))
## 其中 reversesort 指定了是否倒序排序,默認為 False,即默認正序列排序。sortby 指定了排序的字段。