Python PrettyTable库使用指南:安装、样式与高级功能
本文详细介绍Python中PrettyTable库的安装方法及核心用法。涵盖按行与列添加数据、多种输出风格(如MSWORD_FRIENDLY、PLAIN_COLUMNS)切换、获取字符串与HTML代码、自定义对齐与数字格式、排序及复制对象等高级功能,帮助开发者高效生成清晰的文本表格。
本文介绍一个实用的Python库:PrettyTable,供读者参考学习。
安装PrettyTable
通过pip命令可以便捷地安装PrettyTable,具体命令如下:
pip install PrettyTable
PrettyTable使用示例
GitHub上提供了PrettyTable的详细使用说明,链接地址为:https://github.com/dprince/python-prettytable
以下是具体的代码演示:
import prettytable as pt
按行方式添加数据
tb = pt.PrettyTable() tb.field_names = ["City name", "Area", "Population", "Annual Rainfall"] tb.add_row(["Adelaide",1295, 1158259, 600.5]) tb.add_row(["Brisbane",5905, 1857594, 1146.4]) tb.add_row(["Darwin", 112, 120900, 1714.7]) tb.add_row(["Hobart", 1357, 205556,619.5]) print(tb)
+-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.5 | | Brisbane | 5905 | 1857594 | 1146.4 | | Darwin | 112 | 120900 | 1714.7 | | Hobart | 1357 | 205556 | 619.5 | +-----------+------+------------+-----------------+
按列方式添加数据
tb.add_column('index',[1,2,3,4])
print(tb)
+-----------+------+------------+-----------------+-------+ | City name | Area | Population | Annual Rainfall | index | +-----------+------+------------+-----------------+-------+ | Adelaide | 1295 | 1158259 | 600.5 | 1 | | Brisbane | 5905 | 1857594 | 1146.4 | 2 | | Darwin | 112 | 120900 | 1714.7 | 3 | | Hobart | 1357 | 205556 | 619.5 | 4 | +-----------+------+------------+-----------------+-------+
应用不同的输出风格
tb.set_style(pt.MSWORD_FRIENDLY)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.PLAIN_COLUMNS)
print('--- style:PLAIN_COLUMNS -----')
print(tb)
随机风格,每次生成的效果可能不同
tb.set_style(pt.RANDOM)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.DEFAULT)
print('--- style:DEFAULT -----')
print(tb)
--- style:MSWORD_FRIENDLY ----- | City name | Area | Population | Annual Rainfall | | Adelaide | 1295 | 1158259 | 600.5 | | Brisbane | 5905 | 1857594 | 1146.4 | | Darwin | 112 | 120900 | 1714.7 | | Hobart | 1357 | 205556 | 619.5 | --- style:PLAIN_COLUMNS ----- City name Area Population Annual Rainfall Adelaide 1295 1158259 600.5 Brisbane 5905 1857594 1146.4 Darwin 112 120900 1714.7 Hobart 1357 205556 619.5 --- style:MSWORD_FRIENDLY ----- @ Adelaide 1295 1158259 600.5 @ @ Brisbane 5905 1857594 1146.4@ @ Darwin 112 120900 1714.7@ @ Hobart 1357 205556 619.5 @ --- style:DEFAULT ----- +-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.5 | | Brisbane | 5905 | 1857594 | 1146.4 | | Darwin | 112 | 120900 | 1714.7 | | Hobart | 1357 | 205556 | 619.5 | +-----------+------+------------+-----------------+
不直接打印,而是获取表格的字符串表示
s = tb.get_string() print(s)
支持仅提取指定的列或行数据
s = tb.get_string(fields=["City name", "Population"],start=1,end=4) print(s)
+-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.5 | | Brisbane | 5905 | 1857594 | 1146.4 | | Darwin | 112 | 120900 | 1714.7 | | Hobart | 1357 | 205556 | 619.5 | +-----------+------+------------+-----------------+ +-----------+------------+ | City name | Population | +-----------+------------+ | Brisbane | 1857594 | | Darwin | 120900 | | Hobart | 205556 | +-----------+------------+
自定义表格的输出样式
设置左对齐
tb.align = 'l'
设置数字的输出格式
tb.float_format = "2.2"
将边框连接符设置为'*'
tb.junction_char = "*"
设置排序规则
tb.sortby = "City name"
设置左侧不填充空白字符
tb.left_padding_width = 0 print(tb)
*----------*-----*-----------*----------------* |City name |Area |Population |Annual Rainfall | *----------*-----*-----------*----------------* |Adelaide |1295 |1158259 |600.50 | |Brisbane |5905 |1857594 |1146.40 | |Darwin |112 |120900 |1714.70 | |Hobart |1357 |205556 |619.50 | *----------*-----*-----------*----------------*
不显示边框
tb.border = 0 print(tb)
修改边框分隔符
tb.set_style(pt.DEFAULT) tb.horizontal_char = '+' print(tb)
City name Area Population Annual Rainfall Adelaide 1295 1158259 600.50 Brisbane 5905 1857594 1146.40 Darwin 112 120900 1714.70 Hobart 1357 205556 619.50 +++++++++++++++++++++++++++++++++++++++++++++++++++ | City name | Area | Population | Annual Rainfall | +++++++++++++++++++++++++++++++++++++++++++++++++++ | Adelaide | 1295 | 1158259 | 600.50 | | Brisbane | 5905 | 1857594 | 1146.40 | | Darwin | 112 | 120900 | 1714.70 | | Hobart | 1357 | 205556 | 619.50 | +++++++++++++++++++++++++++++++++++++++++++++++++++
PrettyTable也支持输出HTML代码
s = tb.get_html_string() print(s)
| City name | Area | Population | Annual Rainfall |
|---|---|---|---|
| Adelaide | 1295 | 1158259 | 600.50 |
| Brisbane | 5905 | 1857594 | 1146.40 |
| Darwin | 112 | 120900 | 1714.70 |
| Hobart | 1357 | 205556 | 619.50 |
使用copy方法复制表格对象
tb.set_style(pt.DEFAULT) tb.horizontal_char = '.' tb2 = tb.copy() tb.align = 'l' tb2.align = 'r' print(tb) print(tb2)
直接赋值,得到的是索引引用
tb.horizontal_char = '-' tb.aliign = 'l' tb3 = tb tb3.align = 'r' print(tb) print(tb3)
+...........+......+............+.................+ | City name | Area | Population | Annual Rainfall | +...........+......+............+.................+ | Adelaide | 1295 | 1158259 | 600.50 | | Brisbane | 5905 | 1857594 | 1146.40 | | Darwin | 112 | 120900 | 1714.70 | | Hobart | 1357 | 205556 | 619.50 | +...........+......+............+.................+ +...........+......+............+.................+ | City name | Area | Population | Annual Rainfall | +...........+......+............+.................+ | Adelaide | 1295 | 1158259 | 600.50 | | Brisbane | 5905 | 1857594 | 1146.40 | | Darwin | 112 | 120900 | 1714.70 | | Hobart | 1357 | 205556 | 619.50 | +...........+......+............+.................+ +-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.50 | | Brisbane | 5905 | 1857594 | 1146.40 | | Darwin | 112 | 120900 | 1714.70 | | Hobart | 1357 | 205556 | 619.50 | +-----------+------+------------+-----------------+ +-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.50 | | Brisbane | 5905 | 1857594 | 1146.40 | | Darwin | 112 | 120900 | 1714.70 | | Hobart | 1357 | 205556 | 619.50 | +-----------+------+------------+-----------------+ ---------------------
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python操作Excel表格技巧总结》、《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









