python模块——PrettyTable
一. 简介
Python通过prettytable模块将输出内容如表格方式整齐输出,可用来生成美观的ASCII格式的表格,十分实用。
python本身并不内置,需要独立安装该第三方库。
二、使用
简单使用
import prettytable as pt ## 按行添加数据 tb = pt.PrettyTable() tb.field_names = ["名字","投票人数","类型","产地","上映时间","时长","年代","评分"] tb.add_row(["美丽人生",42995,"剧情/喜剧/爱情","意大利","1997-12-20",116,1997,9.5]) tb.add_row(["肖申克的救赎",692795,"剧情/犯罪","美国","1994-09-10",142,1994,9.6]) print(tb)
+--------------+----------+----------------+--------+------------+------+------+------+ | 名字 | 投票人数 | 类型 | 产地 | 上映时间 | 时长 | 年代 | 评分 | +--------------+----------+----------------+--------+------------+------+------+------+ | 美丽人生 | 42995 | 剧情/喜剧/爱情 | 意大利 | 1997-12-20 | 116 | 1997 | 9.5 | | 肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 | 1994-09-10 | 142 | 1994 | 9.6 | +--------------+----------+----------------+--------+------------+------+------+------+
import prettytable as pt ## 按列添加数据 tb = pt.PrettyTable() tb.field_names = ["名字","投票人数","类型","产地","上映时间","时长","年代","评分"] tb.add_row(["美丽人生",42995,"剧情/喜剧/爱情","意大利","1997-12-20",116,1997,9.5]) tb.add_row(["肖申克的救赎",692795,"剧情/犯罪","美国","1994-09-10",142,1994,9.6]) tb.add_column('index',[1,2]) print(tb)
+--------------+----------+----------------+--------+------------+------+------+------+-------+ | 名字 | 投票人数 | 类型 | 产地 | 上映时间 | 时长 | 年代 | 评分 | index | +--------------+----------+----------------+--------+------------+------+------+------+-------+ | 美丽人生 | 42995 | 剧情/喜剧/爱情 | 意大利 | 1997-12-20 | 116 | 1997 | 9.5 | 1 | | 肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 | 1994-09-10 | 142 | 1994 | 9.6 | 2 | +--------------+----------+----------------+--------+------------+------+------+------+-------+
切换输出风格
import prettytable as pt ## 按列添加数据 tb = pt.PrettyTable() tb.field_names = ["名字","投票人数","类型","产地","上映时间","时长","年代","评分"] tb.add_row(["美丽人生",42995,"剧情/喜剧/爱情","意大利","1997-12-20",116,1997,9.5]) tb.add_row(["肖申克的救赎",692795,"剧情/犯罪","美国","1994-09-10",142,1994,9.6]) tb.add_column('index',[1,2]) ## 使用不同的输出风格 tb.set_style(pt.MSWORD_FRIENDLY) print('--- style:MSWORD_FRIENDLY -----') print(tb) tb.set_style(pt.PLAIN_COLUMNS) print('--- style:PLAIN_COLUMNS -----') print(tb) ## 随机风格,每次不同 tb.set_style(pt.RANDOM) print('--- style:MSWORD_FRIENDLY -----') print(tb) tb.set_style(pt.DEFAULT) print('--- style:DEFAULT -----') print(tb)
--- style:MSWORD_FRIENDLY ----- | 名字 | 投票人数 | 类型 | 产地 | 上映时间 | 时长 | 年代 | 评分 | index | | 美丽人生 | 42995 | 剧情/喜剧/爱情 | 意大利 | 1997-12-20 | 116 | 1997 | 9.5 | 1 | | 肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 | 1994-09-10 | 142 | 1994 | 9.6 | 2 | --- style:PLAIN_COLUMNS ----- 名字 投票人数 类型 产地 上映时间 时长 年代 评分 index 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5 1 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6 2 --- style:MSWORD_FRIENDLY ----- {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5 1 {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6 2 {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ --- style:DEFAULT ----- +--------------+----------+----------------+--------+------------+------+------+------+-------+ | 名字 | 投票人数 | 类型 | 产地 | 上映时间 | 时长 | 年代 | 评分 | index | +--------------+----------+----------------+--------+------------+------+------+------+-------+ | 美丽人生 | 42995 | 剧情/喜剧/爱情 | 意大利 | 1997-12-20 | 116 | 1997 | 9.5 | 1 | | 肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 | 1994-09-10 | 142 | 1994 | 9.6 | 2 | +--------------+----------+----------------+--------+------------+------+------+------+-------+
自定义输出格式
import prettytable as pt
## 按列添加数据
tb = pt.PrettyTable()
tb.field_names = ["名字","投票人数","类型","产地","上映时间","时长","年代","评分"]
tb.add_row(["美丽人生",42995,"剧情/喜剧/爱情","意大利","1997-12-20",116,1997,9.5])
tb.add_row(["肖申克的救赎",692795,"剧情/犯罪","美国","1994-09-10",142,1994,9.6])
tb.add_column('index',[1,2])
## 自定义表格输出样式
### 设定对齐方式
# ["l","c","r"] l:左对齐,c:中间对齐,r:右对齐
tb.align='c'
### 设定数字输出格式
tb.float_format = '1'
### 设定边框连接符为'*"
tb.junction_char = "*"
### 设定排序方式
tb.sortby = "投票人数"
### 设定左侧不填充空白字符
tb.left_padding_width = 0
### 填充宽度
tb.padding_width= 5
print(tb)
*-----------------*-------------*-------------------*-----------*---------------*---------*---------*-------------*----------* | 名字 |投票人数 | 类型 | 产地 | 上映时间 |时长 |年代 | 评分 |index | *-----------------*-------------*-------------------*-----------*---------------*---------*---------*-------------*----------* | 美丽人生 | 42995 |剧情/喜剧/爱情 |意大利 |1997-12-20 |116 |1997 |9.500000 | 1 | |肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 |1994-09-10 |142 |1994 |9.600000 | 2 | *-----------------*-------------*-------------------*-----------*---------------*---------*---------*-------------*----------*
获取特定内容
import prettytable as pt ## 按列添加数据 tb = pt.PrettyTable() tb.field_names = ["名字","投票人数","类型","产地","上映时间","时长","年代","评分"] tb.add_row(["美丽人生",42995,"剧情/喜剧/爱情","意大利","1997-12-20",116,1997,9.5]) tb.add_row(["肖申克的救赎",692795,"剧情/犯罪","美国","1994-09-10",142,1994,9.6]) tb.add_column('index',[1,2]) ## 不打印,获取表格字符串 s = tb.get_string() print(s) ## 可以只获取指定列或行 ##这里只获取'名字'与'时长'这两列,从第一行到第二行 s = tb.get_string(fields=["名字", '时长'],start=1,end=2) print(s)
+--------------+----------+----------------+--------+------------+------+------+------+-------+ | 名字 | 投票人数 | 类型 | 产地 | 上映时间 | 时长 | 年代 | 评分 | index | +--------------+----------+----------------+--------+------------+------+------+------+-------+ | 美丽人生 | 42995 | 剧情/喜剧/爱情 | 意大利 | 1997-12-20 | 116 | 1997 | 9.5 | 1 | | 肖申克的救赎 | 692795 | 剧情/犯罪 | 美国 | 1994-09-10 | 142 | 1994 | 9.6 | 2 | +--------------+----------+----------------+--------+------------+------+------+------+-------+ +--------------+------+ | 名字 | 时长 | +--------------+------+ | 肖申克的救赎 | 142 | +--------------+------+