引人入胜的表格数据显示库!
本文主要是对应官方仓库 README.md
文档的一个中文翻译版本,后续文档可以会发生变动,所以还是需要以官方仓库为准!
# pip
$ python -m pip install -U prettytable
# dev
python -m pip install -U git+https://github.com/jazzband/prettytable
1. 创建表格
介绍 PrettyTable 库的常用的操作方式 —— 创建表格
- [1] 表格的创建和插入方式
from prettytable import PrettyTable
pt = PrettyTable()
pt.field_names = ["City name", "Area"]
pt.add_row(["Adelaide", 1295])
pt.add_rows([["Brisbane", 5905], ["Darwin", 112]])
pt.add_column("Population", [1158259, 1857594, 120900])
- [2] 从 CSV 文件导入数据
from prettytable import from_csv
with open("myfile.csv") as fp:
mytable = from_csv(fp)
- [3] 从数据库中导入数据
import sqlite3
from prettytable import from_db_cursor
connection = sqlite3.connect("mydb.db")
cursor = connection.cursor()
cursor.execute("SELECT field1, field2 FROM my_table")
mytable = from_db_cursor(cursor)
- [4] 复制表格数据
new_pt = pt.copy()
new_pt = pt[0:5]
2. 表格删除
介绍 PrettyTable 库的常用的操作方式 —— 表格删除
- [1] 删除方法介绍
编号 | 方法名称 | 对应含义解释 |
---|---|---|
1 | del_row |
以整数索引来删除行 |
2 | del_column |
以单列字段名称来删除列 |
3 | clear_rows |
删除所有数据但保留表格标题 |
4 | clear |
删除所有行和所有字段名但会保留相关样式设置 |
- [2] 示例代码演示
pt.del_row(0)
pt.del_column("Area")
pt.clear_rows()
pt.clear
3. 表格输出
介绍 PrettyTable 库的常用的操作方式 —— 表格输出
- [1] Printing
# 字符输出
print(x)
- [2] Stringing
# 保留样式
print(x.get_string())
- [3] 控制显示哪些数据
# 输出如下两列
print(x.get_string(fields=["City name", "Population"]))
# 第二行到第四行
print(x.get_string(start=1, end=4))
- [4] 改变列的对齐方式
# 左
x.align = "l"
# 中
x.align = "c"
# 右
x.align = "r"
x.align["City name"] = "l"
x.align["Area"] = "c"
x.align["Population"] = "r"
x.align["Annual Rainfall"] = "c"
print(x)
- [5] 根据字段对表进行排序
print(x.get_string(sortby="Population"))
x.sortby = "Population"
print(x)
x.sortby = None
# 自定义排序函数
print(x.get_string(sort_key=fn))
- [6] 设置表格样式
编号 | 表格样式 | 对应含义解释 |
---|---|---|
1 | DEFAULT |
默认的表格外观 |
2 | PLAIN_COLUMNS |
一种无边框的样式 |
3 | MARKDOWN |
遵循 MARKDOWN 语法的表格样式 |
4 | ORGMODE |
适合 Org-mode 语法的表格样式 |
from prettytable import MSWORD_FRIENDLY
x.set_style(MSWORD_FRIENDLY)
print(x)
- [7] 改变表格的外观
编号 | 表格样式 | 对应含义解释 |
---|---|---|
1 | border |
控制是否围绕表绘制边框(True/False) |
2 | header |
控制表的第一行是否为显示所有字段名称的标题(True/False) |
3 | hrules |
控制行水平规则样式的显示(FRAME/HEADER/ALL/NONE) |
4 | vrules |
控制列之间垂直规则的打印(FRAME/ALL/NONE) |
5 | int_format |
一个控制整型数据打印方式的字符串 |
6 | float_format |
一个控制浮点数据打印方式的字符串 |
7 | padding_width |
填充宽度-列数据两边的空格数 |
8 | left_padding_width |
左填充宽度-列数据左侧的空格数 |
9 | right_padding_width |
右填充宽度-列数据右侧的空格数 |
10 | vertical_char |
垂直字符(|) |
11 | horizontal_char |
水平字符(-) |
12 | junction_char |
连接字符(+) |
x = PrettyTable()
x.border = False
x.header = False
x.padding_width = 5
x = PrettyTable(border=False, header=False, padding_width=5)
print(x.get_string(border=False))
- [8] 用 JSON 显示表格
print(x.get_json_string(attributes={
"name":"my_table",
"class":"red_table"}))
- [9] 以 HTML 形式显示表格
print(x.get_html_string(attributes={
"name":"my_table",
"class":"red_table"}))
4. 参考链接
送人玫瑰,手有余香!