使用PrettyTable优雅打印表格


引人入胜的表格数据显示库!

本文主要是对应官方仓库 README.md 文档的一个中文翻译版本,后续文档可以会发生变动,所以还是需要以官方仓库为准!

# pip
$ python -m pip install -U prettytable

# dev
python -m pip install -U git+https://github.com/jazzband/prettytable

使用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. 参考链接

送人玫瑰,手有余香!


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录