prettytable是Python生态中最直观的终端表格库,它用最少的代码实现美观的表格输出,尤其适合数据分析师和运维人员快速展示数据。
prettytable python怎么用:从安装到第一张表格
安装命令与版本选择
在Python环境中安装prettytable只需一行命令,在终端执行:
pip install prettytable
如果你希望固定版本,避免意外更新,可以使用:
pip install prettytable==3.9.0(以PyPI最新稳定版为准)
建议在虚拟环境中安装,降低与其他库的冲突,安装完成后,运行python -c "import prettytable; print(prettytable.__version__)"查看版本信息,确认安装成功,prettytable支持Python 3.6及以上版本,无需额外依赖。
用5行代码生成你的第一张表格
这是最经典的入门示例,展示prettytable的核心用法:
from prettytable import PrettyTable table = PrettyTable() table.field_names = ["姓名", "年龄", "城市"] table.add_row(["张三", 28, "北京"]) table.add_row(["李四", 32, "上海"]) print(table)
输出结果会自动对齐,带有边框,整个过程不到5行代码,这就是prettytable的吸引力所在,如果你已经有数据,可以用add_rows方法一次性添加多行,进一步简化代码。
核心功能:字段对齐、边框样式与数据排序
prettytable允许你精细控制表格的每个细节:
- 字段对齐:通过
align属性,设置table.align["姓名"] = "l"实现左对齐,默认居中对齐,你还可以全局设置table.align。 - 边框样式:
table.border = True/False控制边框显示。table.set_style(PLAIN_COLUMN)切换为无边框样式,table.set_style(MSWORD_FRIENDLY)生成类似Word的表格。 - 数据排序:
table.sortby = "年龄"指定排序字段,table.reversesort = True降序,无需外部排序函数。 - 自定义字符:修改
table.horizontal_char、table.vertical_char、
table.junction_char来定制边框符号,打造独特的表格风格。
这些功能让数据展示既美观又灵活,远胜于手写空格对齐。
prettytable python对比tabulate:哪个更适合你的项目
当需要在终端输出表格时,tabulate是另一个常见选择,两者目标相似,但实现方式不同。
语法复杂度对比
prettytable采用面向对象方式,先创建表格对象,再填充数据,tabulate则是函数式调用,直接传入数据输出。
代码对比:
# prettytable from prettytable import PrettyTable t = PrettyTable() t.field_names = ["A", "B"] t.add_row([1, 2]) print(t) # tabulate from tabulate import tabulate print(tabulate([["A",1],["B",2]], headers=["列1","列2"]))
如果你习惯面向对象,prettytable更直观;如果你喜欢简洁的函数调用,tabulate更直接。
功能特性对比
| 功能 | prettytable | tabulate |
|---|---|---|
| 字段对齐 | 精细控制 | 简单参数 |
| 排序 | 内置支持 | 需外部排序 |
| 边框自定义 | 多风格支持 | 有限格式 |
| 颜色支持 | 可配合colorama | 原生不支持 |
| 学习成本 | 低 | 低 |
| 社区活跃度 | 活跃 | 活跃 |
可以看出,prettytable在控制粒度上更胜一筹,尤其是排序和边框自定义,tabulate更轻量,适合简单输出。
性能与学习成本
对于千行以内的数据,两者性能差异可忽略,prettytable在批量添加时使用add_rows,比逐行添加快数倍,行业共识认为,如果你需要快速构建可交互的终端表格,prettytable是更好的选择;如果你只需要一次性输出,tabulate即可满足。
prettytable python教程:实战场景与报表生成
在这一部分,我们通过实际场景展示prettytable的用途。
从CSV文件加载数据生成表格
在数据分析中,经常需要将CSV文件展示为表格,配合csv模块,代码非常简洁:
import csv
from prettytable import PrettyTable
table = PrettyTable()
with open("data.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
table.field_names = next(reader) # 第一行作为字段名
for row in reader:
table.add_row(row)
print(table)
这样,任何CSV文件都能瞬间转换为美观的表格,方便打印或保存,你还可以通过table.get_csv_string()导出为CSV字符串,实现格式转换。
在Jupyter Notebook中展示表格
Jupyter Notebook中,直接print(table)会输出纯文本,但你可以使用HTML(table.get_html_string())来渲染HTML表格,prettytable自带get_html_string()方法,返回完整的HTML表格字符串。
具体步骤:
- 创建并填充表格对象。
- 调用
html_code = table.get_html_string()。 - 在Notebook单元格中,输入:
from IPython.display import HTML HTML(html_code)
这样,你的表格在Notebook中就会以HTML形式呈现,色彩更丰富。
自定义样式:打造公司内部报表模板
为了统一团队输出风格,你可以封装一个报表函数:
def create_report(data, title, align="l"):
table = PrettyTable()
table.title = title
table.field_names = data[0]
for row in data[1:]:
table.add_row(row)
table.align = align
table.set_style(MSWORD_FRIENDLY)
return table
这样,每次生成报表时,传入数据和标题即可,样式保持一致,你还可以配合colorama,在表格顶部添加颜色标识,提升可读性。
prettytable python性能优化:处理大数据量不错位
当数据量达到万行级别,默认的逐行添加方式可能成为瓶颈,我们需要优化。
默认性能瓶颈在哪
prettytable在每次添加行时,都会重新计算每列的最大宽度,以适应新的数据,如果数据量过大,这个计算会消耗大量时间,同时内存占用也会增加。
批量添加与自动截断
- 批量添加:使用
table.add_rows(data)一次添加多行,内部优化了计算,速度提升明显。
- 限制列宽:设置
table.max_column_width = 20,超出部分自动截断,防止长文本导致表格变形。 - 简化样式:使用
table.set_style(PLAIN_COLUMN)减少边框计算,可以进一步加快输出速度。 - 控制行数:对于大数据集,只展示前N行,例如
table.add_rows(data[:100]),然后打印提示。
替代方案:何时考虑转用pandas
如果你的数据量超过十万行,prettytable可能不是最佳选择,这时,pandas的DataFrame.to_markdown()或to_string()方法效率更高,而且支持更多格式,但prettytable在轻量级、快速展示场景下,依然是最佳选择,你可以先用pandas处理数据,截取前20行再用prettytable展示,既高效又美观。
prettytable python常见问题解答
prettytable python如何设置列宽自动调整?
默认情况下,prettytable会根据内容自动调整列宽,如果你希望固定列宽,可以设置max_column_width属性,例如table.max_column_width = 15,超出部分会截断,你还可以使用set_style(MSWORD_FRIENDLY)来启用自动换行,避免内容被截断。
prettytable python支持中文吗?
完全支持中文,但中文字符在终端中可能对齐不完美,因为中文字符宽度通常为2个英文字符,建议设置table.align为左对齐,并使用等宽字体终端,如果对齐问题严重,可以尝试table.set_style(PLAIN_COLUMN),然后手动调整列宽,或者使用table.max_width限制列宽,避免过长导致错位。
prettytable python如何导出为Excel?
prettytable可以输出为CSV格式,然后通过Excel打开,使用table.get_csv_string()获取CSV字符串,再保存为.csv文件,你也可以使用table.get_html_string()输出HTML表格,用Excel打开HTML文件,但最直接的方式是CSV导出,兼容性最好。
无论你是刚入门Python的新手,还是需要快速生成报表的运维专家,prettytable都能让你用最少的代码达到目的,它不追求全能,却在终端表格输出这个细分领域做到了极致。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/501911.html



