prettytable:像数据库一样格式化输出内容
prettytable:像数据库⼀样格式化输出内容
楔⼦
记得 MySQL 吗?如果在 MySQL 命令⾏查询的话,会以如下的形式进⾏展⽰。
同理,prettytable 就是⽤来将数据按照上述形式进⾏输出的,我们来看⼀下⽤法。
添加表头、添加⾏、添加列
类似于数据库中的表,有表头、或者说字段名,以及每⼀⾏的内容。
from prettytable import PrettyTable
# 传⼊的["姓名", "年龄", "出处"]相当于表头
tb = PrettyTable(["姓名", "年龄", "出处"])
# 调⽤add_row添加⾏记录
tb.add_row(["古明地觉", 16, "东⽅地灵殿"])
tb.add_row(["椎名真⽩", 18, "樱花庄的宠物⼥孩"])
tb.add_row(["坂上智代", 18, "Clannad"])
tb.add_row(["⾬宫优⼦", 16, "悠久之翼"])
tb.add_row(["牧濑红莉栖", 20, "命运⽯之门"])
# 打印
print(tb)
"""
+------------+------+------------------+
|    姓名    | 年龄 |      出处      |
+------------+------+------------------+
| 牧濑红莉栖 |  20  |    命运⽯之门    |
|  古明地觉  |  16  |    东⽅地灵殿    |
|  椎名真⽩  |  18  | 樱花庄的宠物⼥孩 |
|  坂上智代  |  18  |    Clannad      |
|  ⾬宫优⼦  |  16  |    悠久之翼    |
+------------+------+------------------+
"""
当然我们还可以添加⼀列。
from prettytable import PrettyTable
tb = PrettyTable()
# 指定表头还可以通过tb.field_names单独指定
tb.field_names = ["姓名", "年龄", "出处"]
# 调⽤add_row添加⾏记录
tb.add_row(["古明地觉", 16, "东⽅地灵殿"])
tb.add_row(["椎名真⽩", 18, "樱花庄的宠物⼥孩"])
tb.add_row(["坂上智代", 18, "Clannad"])
tb.add_row(["⾬宫优⼦", 16, "悠久之翼"])
tb.add_row(["牧濑红莉栖", 20, "命运⽯之门"])
# 调⽤add_column添加⼀列:列名、数据
tb.add_column("性别", ["⼥"] * 5)
# 打印
print(tb)
"""
+------------+------+------------------+------+
|    姓名    | 年龄 |      出处      | 性别 |
+------------+------+------------------+------+
|  古明地觉  |  16  |    东⽅地灵殿    |  ⼥  |
|  椎名真⽩  |  18  | 樱花庄的宠物⼥孩 |  ⼥  |
|  坂上智代  |  18  |    Clannad      |  ⼥  |
|  ⾬宫优⼦  |  16  |    悠久之翼    |  ⼥  |
| 牧濑红莉栖 |  20  |    命运⽯之门    |  ⼥  |
+------------+------+------------------+------+
"""
从数据源中导⼊数据
prettytable ⽀持从 csv、数据库、html 等数据源中导⼊数据。但是说实话,从数据源读取数据我们⼀般使⽤ pandas,并且还会伴随着数据处理。⽽使⽤ prettytable ⼀般是为了使得程序中输出的某些信息(⽐如⽇志信息)更好的展⽰,如果只是展⽰读取的⽂件内容,还不如⽤Excel、Navicat等⼯具查看呢。
import pymysql
from prettytable import from_csv
from prettytable import from_db_cursor
# 从csv中读取数据
with open("xxx.csv") as f:
tb = from_csv(f)
print(tb)
# 从数据库中读取数据
conn = t()
cursor = conn.cursor()
tb = from_db_cursor(cursor)
print(tb)
可以创建数据集进⾏查看。
输出指定⾏、指定列我们也可以输出 table 的指定⾏、指定列。
from prettytable import PrettyTable
tb = PrettyTable()
tb.field_names = ["姓名", "年龄", "出处"]
tb.add_row(["古明地觉", 16, "东⽅地灵殿"])
tb.add_row(["椎名真⽩", 18, "樱花庄的宠物⼥孩"])
tb.add_row(["坂上智代", 18, "Clannad"])
tb.add_row(["⾬宫优⼦", 16, "悠久之翼"])
tb.add_row(["牧濑红莉栖", 20, "命运⽯之门"])
# fields⽤于选择输出的列,start和end⽤于选择输出的开始⾏和结束⾏
_string(fields=["姓名", "年龄"], start=1, end=3))
"""
+----------+------+
|  姓名  | 年龄 |
+----------+------+
| 椎名真⽩ |  18  |
| 坂上智代 |  18  |
+----------+------+
"""
# 此外可以⽤来进⾏排序
_string(sortby="年龄", reversesort=True))
"""
+------------+------+------------------+
|    姓名    | 年龄 |      出处      |
+------------+------+------------------+
| 牧濑红莉栖 |  20  |    命运⽯之门    |
|  椎名真⽩  |  18  | 樱花庄的宠物⼥孩 |
|  坂上智代  |  18  |    Clannad      |
|  ⾬宫优⼦  |  16  |    悠久之翼    |
|  古明地觉  |  16  |    东⽅地灵殿    |
+------------+------+------------------+
"""
说实话,也不常⽤。与其选择性输出,还不如⼀开始就不要。
设置表格样式
可以通过 set_style 设置样式。
import prettytable
tb = PrettyTable()
# 指定表头还可以通过tb.field_names单独指定
tb.field_names = ["姓名", "年龄", "出处"]
# 调⽤add_row添加⾏记录
tb.add_row(["古明地觉", 16, "东⽅地灵殿"])
tb.add_row(["椎名真⽩", 18, "樱花庄的宠物⼥孩"])
tb.add_row(["坂上智代", 18, "Clannad"])
tb.add_row(["⾬宫优⼦", 16, "悠久之翼"])
tb.add_row(["牧濑红莉栖", 20, "命运⽯之门"])
# 表格样式有以下⼏种:DEFAULT、MSWORD_FRIENDLY、PLAIN_COLUMNS、RANDOM # 我们之前的就是DEFAULT
tb.set_style(prettytable.MSWORD_FRIENDLY)
print(tb)
"""
|    姓名    | 年龄 |      出处      |
|  古明地觉  |  16  |    东⽅地灵殿    |
|  椎名真⽩  |  18  | 樱花庄的宠物⼥孩 |
|  坂上智代  |  18  |    Clannad      |
|  ⾬宫优⼦  |  16  |    悠久之翼    |
| 牧濑红莉栖 |  20  |    命运⽯之门    |
"""
tb.set_style(prettytable.PLAIN_COLUMNS)
print(tb)
"""
姓名年龄出处
古明地觉          16            东⽅地灵殿
椎名真⽩          18        樱花庄的宠物⼥孩
坂上智代          18            Clannad
⾬宫优⼦          16            悠久之翼
牧濑红莉栖        20            命运⽯之门
"""
tb.set_style(prettytable.RANDOM)
print(tb)
"""
古明地觉          16            东⽅地灵殿
椎名真⽩          18          樱花庄的宠物⼥孩
坂上智代          18              Clannad
⾬宫优⼦          16              悠久之翼
牧濑红莉栖          20            命运⽯之门
"""
说实话,还是默认的DEFAULT最好看。
设置对齐⽅式
tb = PrettyTable()
# 指定表头还可以通过tb.field_names单独指定
tb.field_names = ["姓名", "年龄", "出处"]
# 调⽤add_row添加⾏记录
tb.add_row(["古明地觉", 16, "东⽅地灵殿"])
tb.add_row(["椎名真⽩", 18, "樱花庄的宠物⼥孩"])
tb.add_row(["坂上智代", 18, "Clannad"])
tb.add_row(["⾬宫优⼦", 16, "悠久之翼"])
tb.add_row(["牧濑红莉栖", 20, "命运⽯之门"])
# l代表左对齐,c代表居中,r代表右对齐
tb.align["姓名"] = "l"
tb.align["年龄"] = "c"
tb.align["出处"] = "r"
print(tb)
命运石之门游戏攻略"""
+------------+------+------------------+
| 姓名      | 年龄 |            出处 |
+------------+------+------------------+
| 古明地觉  |  16  |      东⽅地灵殿 |
| 椎名真⽩  |  18  | 樱花庄的宠物⼥孩 |
| 坂上智代  |  18  |          Clannad |
| ⾬宫优⼦  |  16  |        悠久之翼 |
| 牧濑红莉栖 |  20  |      命运⽯之门 |
+------------+------+------------------+
"""
设置边框样式
在 PrettyTable 中,边框由三个部分组成,横边框,竖边框,和边框连接符(横竖交叉的链接符号)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。