Python PrettyTable 库使用指南:安装、数据添加与样式定制

巷口听风
巷口听风
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍Python中PrettyTable库的安装方法及核心用法。涵盖按行和按列添加数据、设置MSWORD_FRIENDLY等输出风格、获取字符串与HTML代码、自定义边框与对齐方式,以及表格复制技巧,帮助开发者快速实现终端表格的美化输出。

在Python中,PrettyTable是一个用于生成美观表格输出的第三方库。首先需要通过pip进行安装,执行命令:pip install PrettyTable。

pip install PrettyTable

初始化PrettyTable对象后,可以通过field_names属性定义表头,随后使用add_row方法逐行添加数据。例如,创建包含name、age、height、weight字段的表格,并依次添加['autofelix', 25, 174, 65]、['大神', 23, 164, 55]和['飞兔小哥', 27, 184, 69.5]三行数据,最后打印表格即可看到对齐的输出结果。

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

print(tb)

# +-----------+-----+--------+--------+
# | name | age | height | weight |
# +-----------+-----+--------+--------+
# | autofelix | 25 | 174 | 65 |
# | 大神 | 23 | 164 | 55 |
# | 飞兔小哥 | 27 | 184 | 69.5 |
# +-----------+-----+--------+--------+

在已定义表头和行数据的基础上,可以使用add_column方法按列追加数据。例如,在原有表格中新增'sex'列,并依次添加['男', '女', '男']作为对应行的性别数据,打印后将显示包含新列的完整表格。

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])
# 按列添加数据
tb.add_column('sex',['男', '女', '男'])

print(tb)

# +-----------+-----+--------+--------+-----+
# | name | age | height | weight | sex |
# +-----------+-----+--------+--------+-----+
# | autofelix | 25 | 174 | 65 | 男 |
# | 大神 | 23 | 164 | 55 | 女 |
# | 飞兔小哥 | 27 | 184 | 69.5 | 男 |
# +-----------+-----+--------+--------+-----+

PrettyTable支持多种预设的输出风格,可通过set_style方法切换。主要风格包括MSWORD_FRIENDLY、PLAIN_COLUMNS、RANDOM和DEFAULT,不同风格会影响表格边框和间距的显示效果。

  • MSWORD_FRIENDLY风格模拟Microsoft Word的表格样式,输出时不包含上下边框线,仅保留列分隔,适合需要简洁显示的终端环境。
  • PLAIN_COLUMNS风格为纯列输出风格,去除了所有边框线,仅保留列对齐,适用于数据密集且无需边框干扰的场景。
  • RANDOM风格每次调用打印时随机应用不同的边框样式,主要用于测试或展示库的灵活性,实际生产中较少使用。
  • DEFAULT为默认输出风格,包含完整的边框线和列分隔符,是未设置特定风格时的默认显示方式,提供标准的表格外观。
import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])
# 风格
tb.set_style(pt.MSWORD_FRIENDLY)

print(tb)

# | name | age | height | weight |
# | autofelix | 25 | 174 | 65 |
# | 大神 | 23 | 164 | 55 |
# | 飞兔小哥 | 27 | 184 | 69.5 |

除了直接打印,还可以使用get_string方法获取表格的字符串表示。该方法支持通过fields参数指定列名,通过start和end参数指定行范围,从而提取表格的特定部分作为字符串返回。

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

# 不打印,获取表格字符串
s1 = tb.get_string()
print(s1)

# +-----------+-----+--------+--------+
# | name | age | height | weight |
# +-----------+-----+--------+--------+
# | autofelix | 25 | 174 | 65 |
# | 大神 | 23 | 164 | 55 |
# | 飞兔小哥 | 27 | 184 | 69.5 |
# +-----------+-----+--------+--------+

# 或者可以只获取指定列或行
s2 = tb.get_string(fields=['name', 'age'], start=1, end=4)
print(s2)

# +----------+-----+
# | name | age |
# +----------+-----+
# | 大神 | 23 |
# | 飞兔小哥 | 27 |
# +----------+-----+

PrettyTable提供了丰富的样式自定义选项。可以通过align属性设置列对齐方式(如'l'表示左对齐),float_format控制浮点数输出格式(如'2.2'保留两位小数),junction_char修改列分隔符字符,sortby按指定列排序,left_padding_width调整左侧内边距,horizontal_char更改水平分隔符,以及通过border=0隐藏边框等。

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

# 设定左对齐
tb.align = 'l'
# 设定数字输出格式
tb.float_format = '2.2'
# 设定边框连接符为'*"
tb.junction_char = '*'
# 设定排序方式
tb.sortby = 'age'
# 设定左侧不填充空白字符
tb.left_padding_width = 0
# 不显示边框
# tb.border = 0
# 修改边框分隔符
tb.horizontal_char = '+'

print(tb)

# *++++++++++*++++*+++++++*+++++++*
# |name |age |height |weight |
# *++++++++++*++++*+++++++*+++++++*
# |大神 |23 |164 |55 |
# |autofelix |25 |174 |65 |
# |飞兔小哥 |27 |184 |69.50 |
# *++++++++++*++++*+++++++*+++++++*

使用get_html_string方法可以将PrettyTable对象转换为HTML表格代码。生成的HTML包含<thead>和<tbody>标签,可直接嵌入网页中使用,便于在Web环境中展示结构化数据。

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

# 输出HTML代码
s = tb.get_html_string()
print(s)

# <table>
# <thead>
# <tr>
# <th>name</th>
# <th>age</th>
# <th>height</th>
# <th>weight</th>
# </tr>
# </thead>
# <tbody>
# <tr>
# <td>autofelix</td>
# <td>25</td>
# <td>174</td>
# <td>65</td>
# </tr>
# <tr>
# <td>大神</td>
# <td>23</td>
# <td>164</td>
# <td>55</td>
# </tr>
# <tr>
# <td>飞兔小哥</td>
# <td>27</td>
# <td>184</td>
# <td>69.5</td>
# </tr>
# </tbody>
# </table>

可以通过copy方法复制现有的PrettyTable对象,并独立修改副本的样式属性。例如,将原表的horizontal_char设为'.',复制后修改副本的对齐方式为右对齐,打印两个对象可对比不同样式的效果。

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

tb.horizontal_char = '.'
tb2 = tb.copy()
tb.align = 'l'
tb2.align = 'r'
print(tb)
print(tb2)

# +...........+.....+........+........+
# | name | age | height | weight |
# +...........+.....+........+........+
# | autofelix | 25 | 174 | 65 |
# | 大神 | 23 | 164 | 55 |
# | 飞兔小哥 | 27 | 184 | 69.5 |
# +...........+.....+........+........+

# +...........+.....+........+........+
# | name | age | height | weight |
# +...........+.....+........+........+
# | autofelix | 25 | 174 | 65 |
# | 大神 | 23 | 164 | 55 |
# | 飞兔小哥 | 27 | 184 | 69.5 |
# +...........+.....+........+........+

本文介绍了Python利用PrettyTable美化表格的主要方法,包括安装、数据添加、风格设置、字符串获取、样式定制、HTML输出及复制功能。更多相关PrettyTable 美化表格内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。