持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
介绍
prettytable最主要的目的是能够将数据以类似于ASCII表格的形式进行展示,默认展示效果类似于我们在终端中使用MySQL时查询数据得到的数据的表格格式,但是prettytable也提供了自定义表格样式的方法,只不过本文重点是介绍如何使用,如果小伙伴们对prettytable感兴趣可以去prettytable官网 pypi.org/project/pre… 进行更多的了解....
安装
-- 两种方式
pip install -U prettytable
pip install -U git+https://github.com/jazzband/prettytable
使用
基本使用
代码中涉及到的数据来自于prettytable官方网站
首先需要通过PrettyTable生成一个PrettyTable对象,当我们打印x(PrettyTable对象)的时候得到的是一个空的表格。
from prettytable import PrettyTable
x = PrettyTable() # 创建prettytable对象
print(x) # 得到的是空表格
-------------------------------结果--------------------------------
++
||
++
++
Process finished with exit code 0
通常情况下,我们在使用表格时,都会有表头(字段),通过借助PrettyTable对象的field_names方法可以向表格中添加表头(字段)。
from prettytable import PrettyTable
# 创建prettytable对象,得到空表格
x = PrettyTable()
# 为空表格添加字段(表头)
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
print(x)
-------------------------------结果--------------------------------
+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
+-----------+------+------------+-----------------+
Process finished with exit code 0
我们最终的目的是将数据填写到表格中,同样的通过借助PrettyTable对象的add_row方法可以向表格中一行一行的添加数据。
from prettytable import PrettyTable
# 创建prettytable对象,得到空表格
x = PrettyTable()
# 为空表格添加字段(表头)
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
# 向表格中添加数据,一行数据存放在一个列表中作为add_row的参数
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.add_row(["Perth", 5386, 1554769, 869.4])
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 |
| Perth | 5386 | 1554769 | 869.4 |
+-----------+------+------------+-----------------+
Process finished with exit code 0
上面向表格中添加数据时,添加几行数据就需要调用几次add_row方法,显然这种方式在日常开发中并不适用,因此prettytable的add_row方法同样支持一次性的向表格中添加多条数据。
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
# 添加多条数据,多条数据存放在一个列表中作为add_row方法的参数
x.add_rows(
[ ["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],
["Perth", 5386, 1554769, 869.4],
]
)
当然除了上面向表格中添加表头和数据的方式之外,还可以通过一列一列的向表格中添加数据,使用这种方式需要借助PrettyTable对象的add_column方法。add_column方法需要两个参数,第一个参数是表格的字段,是string类型,第二个参数是该列需要添加的值,为list 或者 tuple 。
from prettytable import PrettyTable
# 创建prettytable对象,得到空表格
x = PrettyTable()
# 向表格中同时添加字段和该列字段的值
x.add_column("City name",
["Adelaide","Brisbane","Darwin","Hobart","Sydney","Melbourne","Perth"])
有时候我们可能只想要查看某几列的数据,这时候就需要在打印结果的时候进行限定,需要借助get_string方法。
# 只打印表格中的city name和population两个字段的值,其他字段不会进行打印
print(x.get_string(fields=["City name", "Population"])
另外我们可以通过get_string方法控制只输出指定的几行数据。就是通过start和end这两个参数,这两个参数类似于Python的列表切片顾头不顾尾,start表示开始位置,end表示结束,0表示第一行数据。
# 打印表格中的第二 第三 和第四行数据
print(x.get_string(start=1, end=4))
通过了上面的演示,不知道大家有没有觉得,操作上有点向数据库靠拢,在数据库中是可以根据字段对表格数据进行排序,同样的prettytable也可以通过指定字段进行排序。默认按照从小到大的顺序进行排列,如果想要按照从大到小的顺序,需要额外指定参数reversesort=True
# 通过population字段对表格数据进行排序
print(x.get_string(sortby="Population")) # 从小到大
print(x.get_string(sortby="Population", reversesort=True)) # 从大到小
从csv文件中导入数据
prettytable除了上面的基本使用之外,还可以通过该模块字典的from_csv方法将csv文件中的数据加载到prettytable的表格中,只需要简单的读文件操作即可完成。
from prettytable import from_csv
from prettytable import from_csv
with open("myfile.csv") as f:
mytable = from_csv(f)
print(mytable)
将数据库中的数据导入到表格中
如果表格中的数据需要从数据库中获取,并且数据库中的数据可以通过Python的数据库API获取到的话,就可以使用数据库cursor对象创建prettytable。这里以mysql为例进行演示。
import pymysql
from prettytable import from_db_cursor
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
database='test',
user='root',
password='0000',
charset='utf8mb4'
)
cursor = conn.cursor()
sql = "select * from test;"
cursor.execute(sql)
mytable = from_db_cursor(cursor) # 将数据库中的数据导入到prettytable中
print(mytable)
-----------------------------------结果-------------------------------
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 开发 | 5 |
| 2 | 运维 | 20 |
+----+------+-----+
Process finished with exit code 0