tabulate学习
一、什么是tabulate
tabulate是 Python 打印格式化表格的库,支持列表、字典、DataFrame 等数据,输出美观的控制台表格,支持 markdown、html、latex、grid 等十几种格式。比较适用于命令行输出表格类型。
使用的初衷是因为笔者喜欢使用markdown做笔记,但是python输出的表格类型的结果整理到markdown比较麻烦
二、下载
bash
pip install tabulate
三、输出表格
python
from tabulate import tabulate
data = [
["001", "你是1", "厉害的1"],
["002", "你是2", "厉害的2"],
["003", "你是3", "厉害的3"]
]
# 表头
headers = ["编号", "列1", "列2"]
# 打印表格
print(tabulate(data, headers=headers, tablefmt="grid"))
输出结果如下
tex
+------+------+------+
| 编号 | 列1 | 列2 |
+======+======+======+
| 001 | 你是1 | 厉害的1 |
+------+------+------+
| 002 | 你是2 | 厉害的2 |
+------+------+------+
| 003 | 你是3 | 厉害的3 |
+------+------+------+
支持的类型
| 参数 | 效果 | 适用场景 |
|---|---|---|
| simple | 极简横线 | 快速调试 |
| grid | 实线边框 | 控制台日志 |
| fancy_grid | 美化圆角边框 | 展示输出 |
| github | Markdown 表格 | 无自动对齐空格,所有单元格紧贴竖线 |
| pipe | Markdown 表格 | 全去掉多余空格,最小体积,纯管道分隔 |
| html | HTML 表格 | 网页输出 |
| latex | Latex 代码 | 论文报告(latex 格式) |
四、可以整理的表格类型
4.1 二维列表类型
4.2 字典类型
python
from tabulate import tabulate
data = [{'编号': '001', '列1': '你是1', '列2': '厉害的1'},
{'编号': '002', '列1': '你是2', '列2': '厉害的2'},
{'编号': '003', '列1': '你是3', '列2': '厉害的3'}]
# 打印表格
print(tabulate(data, headers='keys', tablefmt="fancy_grid"))
4.3 DataFrame类型
python
from tabulate import tabulate
import pandas
data = pandas.DataFrame({
"编号": ["001", "002", "003"],
"列1": ["你是1", "你是2", "你是3"],
"列2": ["厉害的1", "厉害的2", "厉害的3"]
})
# 打印表格 , showindex=False 不输出行索引
print(tabulate(data, headers='keys', tablefmt="fancy_grid", showindex=False))
五、常用参数
-
showindex=True/False:是否显示行号
pythonprint(tabulate(data, headers=headers, showindex=True)) -
numalign="left"/"right"/"center":数字对齐方式
-
stralign="center":文字居中
pythonprint(tabulate(data, headers=headers, stralign="center", numalign="center")) -
floatfmt=".2f":浮点数保留 2 位小数
pythondata = [["A", 1234.567], ["B", 89.1]] print(tabulate(data, headers=["列1","列2"], floatfmt=".2f")) -
maxcolwidths=10,20,8:限制每列最大宽度,长文本自动换行
pythonprint(tabulate(data, headers=headers, maxcolwidths=[8, 30, 10]))