这个库的主要作用是:当我们想要结构话的打印一些表格类的数据时会让我们的视觉体验变好
一行命令:python -m pip install -U prettytable 搞定
首先来看一个打印的效果
要想实现上边的效果使用下边的代码:有两种实现方式, 一种是按行添加数据,另一种是按列添加数据,需要注意的是按行需要首先添加表头信息(首行),按列添加不需要提前定义表头:
from prettytable import PrettyTable
x = PrettyTable() # 写法一
# 定义首行
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
# x = PrettyTable(["City name", "Area", "Population", "Annual Rainfall"]) # 写法二
# 添加每一行的数据
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])
print(x)
如果我们的数据比较多,按行添加起来比较麻烦,也可以一次性添加多行数据:
# 一次性添加所有数据
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_rows(
[
["Adelaide", 1295, 1158259, 600.5],
["Brisbane", 5905, 1857594, 1146.4],
["Darwin", 112, 120900, 1714.7],
["Hobart", 1357, 205556, 619.5],
["Sydney", 2058, 4336374, 1214.8],
["Melbourne", 1566, 3806092, 646.9],
["Perth", 5386, 1554769, 869.4],
]
)
print(x)
# 按列进行添加
x = PrettyTable()
x.add_column("City name",["Adelaide","Brisbane","Darwin","Hobart","Sydney","Melbourne","Perth"])
x.add_column("Area", [1295, 5905, 112, 1357, 2058, 1566, 5386])
x.add_column("Population", [1158259, 1857594, 120900, 205556, 4336374, 3806092,
1554769])
x.add_column("Annual Rainfall",[600.5, 1146.4, 1714.7, 619.5, 1214.8, 646.9,
869.4])
print(x)
这里介绍以下几个方面: 按行/列打印数据,更改对齐方式, 更改表格样式,表格颜色设置
按列打印
# 只打印某几列数据
print(x.get_string(fields=["City name", "Population"]))
按行打印
# 只打印某几行的数据,去除表头,数据区域索引从0开,下边类似pyhon索引[start, end]
print(x.get_string(start=1, end=4))
这里可以更改全局对齐方式或者更改特定列的对齐方式
# 改变全局对齐方式,x.align = "r" , 可选字符有'l','c','r',分别表示左对齐,居中,右对齐
x.align='r'
# 单独更改某一列的对齐方式
x.align["City name"] = "l"
x.align["Area"] = "c"
x.align["Population"] = "r"
x.align["Annual Rainfall"] = "c"
print(x)
# 按照某一列的值进行排序
print(x.get_string(sortby="Population"))
# 按照某一列的值进行排序--逆序
print(x.get_string(sortby="Population",reversesort=True))
# 如果经常性想按照某列进行排序,按照下边的一行
x.sortby = "Population"
x.reversesort = True
# 如果想自定义排序规则,添加sort_key 关键字参数
# 更改打印的样式
from prettytable import MSWORD_FRIENDLY,PLAIN_COLUMNS,MARKDOWN,ORGMODE,SINGLE_BORDER ,DOUBLE_BORDER
x.set_style(MSWORD_FRIENDLY)
print(x)
x.set_style(PLAIN_COLUMNS) # 无边框格式
print(x)
x.set_style(MARKDOWN) # MarkDown格式
print(x)
x.set_style(ORGMODE) # Org-Mode(一种语言,类似markdown)格式
print(x)
x.set_style(SINGLE_BORDER) # 单实线格式
print(x)
x.set_style(DOUBLE_BORDER) # 双实线格式
print(x)
可以使用默认的Themes.OCEAN,打印出来的是蓝色效果,也可以通过Theme传参的形式进行设置
# 彩色打印:
from prettytable.colortable import ColorTable, Themes,Theme
x = ColorTable(theme=Themes.OCEAN)
# # ANSI颜色值设置具体参考:https://zh.wikipedia.org/wiki/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97
# x = ColorTable(theme=Theme(default_color="33", # 黄色
# vertical_color="42", # 绿色
# horizontal_color="35", #紫色
# junction_color="41",)) # 红色
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
# 添加每一行的数据
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])
print(x)
当启Them自定义时,当前参数显示效果如下
关于prettytable还有很多可用的功能,因为我这里用不到,所以暂时就先不介绍了,有兴趣的朋友可以去prettytable · PyPI 自行探索。
本文参考资料: prettytable · PyPI