PythonPrettyTable是Python的一个生成漂亮表格的库。它提供了简单易用的API以及各种定制化的选项,可以快速生成符合各种需求、美观易读的表格。在这篇文章中,我们将从多个方面对PythonPrettyTable做详细阐述,以便让读者了解该库的所有特性以及如何使用。
一、基础使用
PythonPrettyTable最简单的使用是通过传入表头和数据来创建表格:
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
print(x)
这样就可以生成一个包含表头和数据的表格了:
+-------------+------+------------+-----------------+
| 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 |
| Sydney | 2058 | 4336374 | 1214.8 |
| Melbourne | 1566 | 3806092 | 646.9 |
+-------------+------+------------+-----------------+
在这个例子中,我们首先创建了一个空的PrettyTable对象,然后设置表头和数据,最后通过print
函数打印出来。
二、定制化选项
除了基础使用之外,PythonPrettyTable还提供了各种选项以定制生成的表格。下面是其中几个常用的选项:
1. 添加样式
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.align["City name"] = "l" # 左对齐
x.align["Area"] = "r" # 右对齐
x.align["Population"] = "r"
x.align["Annual Rainfall"] = "r"
x.border = False # 去掉边框
x.header = True # 显示表头
x.padding_width = 1 # 设置单元格的间隔
print(x)
这样就可以生成一个没有边框的表格:
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
Sydney | 2058 | 4336374 | 1214.8
Melbourne | 1566 | 3806092 | 646.9
在这个例子中,我们使用了align
属性设置每列的对齐方式,使用了border
属性设置是否显示边框,使用了header
属性设置是否显示表头,以及使用了padding_width
属性设置单元格之间的间隔。
2. 设置字段类型
有时候表格中的字段可能是不同的类型,如果想要正确地对这些类型进行比较或排序,就需要通过属性set_style
来设置类型。
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.align["City name"] = "l"
x.align["Area"] = "r"
x.align["Population"] = "r"
x.align["Annual Rainfall"] = "r"
x.set_style(13) # 设置Area和Population的类型为整型
x.set_style(13, target='rows', slice(1, 5, 2)) # 设置偶数行的Area和Population的类型为整型
print(x)
这样就可以生成一个带有整型字段的表格:
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
Sydney | 2058 | 4336374 | 1214.8
Melbourne | 1566 | 3806092 | 646.9
在这个例子中,我们使用了set_style
属性,设置了Area
和Population
的类型为整型。
三、高级用法
除了基础用法和定制化选项之外,PythonPrettyTable还提供了许多高级的功能,包括表格转置、排序、分片等。这些功能可以更加灵活地处理表格数据,满足各种需求。
1. 表格转置
通过transpose
属性可以将表格转置。
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.align["City name"] = "l"
x.align["Area"] = "r"
x.align["Population"] = "r"
x.align["Annual Rainfall"] = "r"
print(x.transpose())
这样就可以生成一个转置后的表格:
+-----------------+-------------+---------+-------+--------+------------+
| 0 | 1 | 2 | 3 | 4 | 5 |
+-----------------+-------------+---------+-------+--------+------------+
| City name | Adelaide | Brisbane| Darwin| Hobart | Sydney |
| | | | | | |
| | 1295 | 5905 | 112 | 1357 | 2058 |
| | | | | | |
| | 1158259 | 1857594 |120900 | 205556 | 4336374 |
| | | | | | |
| | 600.5 | 1146.4 |1714.7 | 619.5 | 1214.8 |
|-----------------+-------------+---------+-------+--------+------------+
| | Melbourne | | | | |
|-----------------+-------------+---------+-------+--------+------------+
| | 1566 | | | | |
| | 3806092 | | | | |
| | 646.9 | | | | |
+-----------------+-------------+---------+-------+--------+------------+
在这个例子中,我们使用了transpose
属性将表格进行了转置。
2. 排序和分片
通过sortby
和reverse_sortby
属性可以对表格进行排序。另外,可以使用slice
方法对表格进行分片。
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide", 1295, 1158259, 600.5])
x.add_row(["Brisbane", 5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.align["City name"] = "l"
x.align["Area"] = "r"
x.align["Population"] = "r"
x.align["Annual Rainfall"] = "r"
x.sortby = "Population"
x.reversesort = True
print(x.get_string(start=1, end=4, sortby="Area"))
这样就可以生成一个排序和分片后的表格:
+------------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+------------+------+------------+-----------------+
| Brisbane | 5905 | 1857594 | 1146.4 |
| Melbourne | 1566 | 3806092 | 646.9 |
| Sydney | 2058 | 4336374 | 1214.8 |
+------------+------+------------+-----------------+
在这个例子中,我们使用了sortby
属性对表格进行了排序,并使用了reversesort
属性使结果反向。同时,我们还使用了get_string
方法对结果进行分片,并设置了其他属性以满足不同的需求。
四、总结
在本篇文章中,我们详细阐述了PythonPrettyTable库的基础使用、定制化选项以及高级用法。通过实例化一个PrettyTable对象,设置表头和数据,以及其他不同的属性和方法,我们可以生成各种各样的表格来展示和处理数据。如果你对数据分析和可视化有一定的需求,PythonPrettyTable是一个非常好的选择。