Tabulate:输出漂亮表格排版的 Python 库
什么是 Tabulate
Tabulate 是一个「一行代码」搞定表格排版的 Python 库,兼顾命令行工具。
- 纯 Python 实现,支持 Python3
- 只要
from tabulate import tabulate,传入列表、字典、Pandas DataFrame 都能直接转成好看的文本表格 - CLI 也自带
tabulate命令,直接在终端里处理 CSV、TSV、空白分隔都没问题
平时打印表格,常见的问题:
- 手动拼接字符串,列宽不对齐,数字小数点对不齐
- Markdown、RST、HTML、LaTeX……各种格式对应不同写法,切换累
- 多列混合文字和数字,文本左对齐、数字右对齐,还能按小数点对齐?写死代码麻烦
- 想在终端里快速查看 CSV,得先写脚本或打开 Excel
Tabulate 一次搞定:
- 智能探测数字 vs 文本,自动对齐(还支持按小数点对齐)
- 支持 30+ 种输出格式:
plain、simple、github、grid、pipe、html、latex_booktabs……随你切 - 参数丰富:自定义行号、列名称、数字格式化、宽度自动换行、多行单元格、分隔线……
- 不用脑子,直接一个函数,格式全交给它
安装 :
pip install tabulate # 或者只装库,不装命令行: TABULATE_INSTALL=lib-only pip install tabulate
使用:
from tabulate import tabulate
data = [
["苹果", 696000, 1.9891e+09],
["香蕉", 6371, 5.9736e+03],
["橘子", 1737, 7.35],
["桃子", 3390, 6.4185e+02]
]
# 默认格式
print(tabulate(data))

加个表头 & 换成 GitHub 风格
from tabulate import tabulate
data = [
["苹果", 696000, 1.9891e+09],
["香蕉", 6371, 5.9736e+03],
["橘子", 1737, 7.35],
["桃子", 3390, 6.4185e+02]
]
headers = ["名称", "重量 (km)", "数量 (10^24 kg)"]
print(tabulate(data, headers=headers, tablefmt="github", floatfmt=".2f"))

常见高级玩法
showindex=True:给表格加行号numalign="decimal":数字小数点对齐colalign=("left","center","right"):按列自定义对齐floatfmt=".3e"/intfmt=",":数字格式化tablefmt="fancy_grid":各种伪图形边框,一秒炫酷
from tabulate import tabulate
data = [
["苹果", 696000, 1.9891e+09],
["香蕉", 6371, 5.9736e+03],
["橘子", 1737, 7.35],
["桃子", 3390, 6.4185e+02]
]
headers = ["名称", "重量 (km)", "数量 (10^24 kg)"]
print(tabulate(data, headers=headers, tablefmt="fancy_grid", floatfmt=".2f", showindex=True, numalign="decimal",
colalign="left"))

| 参数名 | 类型 | 说明 | 示例值 |
| data | list / dict / DataFrame / NumPy array | 要格式化的数据 | [[1, 'Alice', 25], [2, 'Bob', 30]] |
| headers | str 或 list | 表头,可以是:'firstrow'(第一行作为表头)、'keys'(字典键作为表头)、或自定义列表 |
['ID', 'Name', 'Age'] |
| tablefmt | str | 表格样式 | 'grid', 'plain', 'simple', 'pipe', 'html', 'latex', 'github' 等 |
| colalign | list | 列对齐方式 | ['left', 'center', 'right'] |
| numalign | str | 数字对齐方式 | 'left', 'center', 'right' |
| stralign | str | 字符串对齐方式 | 'left', 'center', 'right' |
| floatfmt | str | 浮点数格式 | '.2f'(保留两位小数) 【'.2f', '.3g', 'e'】 |
| missingval | str | 缺失值显示内容 | 'N/A' |

浙公网安备 33010602011771号