Python利用prettytable实现格式化输出内容

2022-07-21 17:13:21

目录楔子添加表头、添加行、添加列输出指定行、指定列设置表格样式设置对齐方式设置边框样式楔子我们用MySQL客户端查询数据的时候,是以下面这种格式显示的:内容展示的非常漂亮,而Python有一个...

目录
楔子
添加表头、添加行、添加列
输出指定行、指定列
设置表格样式
设置对齐方式
设置边框样式

楔子

我们用 mysql 客户端查询数据的时候,是以下面这种格式显示的:

Python利用prettytable实现格式化输出内容

内容展示的非常漂亮,而 python 有一个第三方模块叫 prettytable,专门用来将数据以上面这种格式输出,我们来看一下用法。

添加表头、添加行、添加列

类似于数据库中的表,由表头(或者说字段名),以及每一行的内容组成。

fromprettytableimportPrettyTable

#传入的name、age、country相当于表头
tb=PrettyTable(["name","age","country"])
#调用add_row添加行记录
tb.add_row(["JackMorrison",49,"America"])
tb.add_row(["ShimadaGenji",35,"Japan"])
tb.add_row(["ShimadaHanzo",38,"Japan"])
tb.add_row(["AngelaZiegler",37,"Switzerland"])

print(tb)
"""
+----------------+-----+-------------+
|name|age|country|
+----------------+----http://www.cppcns.com-+-------------+
|JackMorrison|49|America|
|ShimadaGenji|35|Japan|
|ShimadaHanzo|38|Japan|
|AngelaZiegler|37|Switzerland|
+----------------+-----+-------------+
"""

如果在编写的过程中,我们需要临时添加一列,prettytable 也是支持的。

fromprettytableimportPrettyTable

tb=PrettyTable(["name","age","country"])
tb.add_row(["JackMorrison",49,"America"])
tb.add_row(["ShimadaGenji",35,"Japan"])
tb.add_row(["ShimadaHanzo",38,"Japan"])
tb.add_row(["AngelaZiegler",37,"Switzerland"])

#调用add_column添加一列
tb.add_column("gender",
["male","male","male","female"])
print(tb)
"""
+----------------+-----+-------------+--------+
|name|age|country|gender|
+----------------+-----+-------------+--------+
|JackMorrison|49|America|male|
|ShimadaGenji|35|Japan|male|
|ShijsmadaHanzo|38|Japan|male|
|AngelaZiegler|37|Switzerland|female|
+----------------+-----+-------------+--------+
"""

输出内容是不是和 MySQL数据库类似呢。

此外 prettytable 还支持从 csv、数据库、html 等数据源中导入数据,但说实话,从数据源读取数据我们一般使用 pandas,并且还会伴随着数据处理。而使用 prettytable 只是为了让程序中产生的信息,能够以结构化的形式打印,很少会从文件或数据库里面读数据。

输出指定行、指定列

我们也可以输出 table 的指定行、指定列。

fromprettytableimportPrettyTable

tb=PrettyTable(["name","age","country","gender"])
tb.add_row(["JackMorrison",49,"America","male"])
tb.add_row(["ShimadaGenji",35,"Japan","male"])
tb.add_row(["ShimadaHanzo",38,"Japan","male"])
tb.add_row(["AngelaZiegler",37,"Switzerland","female"])
#只输出name和age两列
#start和end表示开始和结束的行数(从0开始)
print(tb.get_string(fields=["name","age"],
start=1,end=3))
"""
+---------------+-----+
|name|age|
+---------------+-----+
|ShimadaGenji|35|
|ShimadaHanzo|38|
+---------------+-----+
"""

#此外可以用来进行排序
print(tb.get_string(sortby="age",reversesort=True))
"""
+----------------+-----+-------------+--------+
|name|age|country|gender|
+----------------+-----+-----php--------+--------+
|JackMorrison|49|America|male|
|ShimadaHanzo|38|Japan|male|
|AngelaZiegler|37|Switzerland|female|
|ShimadaGenji|35|Japan|male|
+----------------+-----+-------------+--------+
"""

设置表格样式

表格也支持几种不同的样式,供我们选择。

fromprettytableimport*

tb=PrettyTable(["name","age","country","gender"])
tb.add_row(["JackMorrison",49,"America","male"])
tb.add_row(["ShimadaGenji",35,"Japan","male"])
tb.add_row(["ShimadaHanzo",38,"Japan","male"])
tb.add_row(["AngelaZiegler",37,"Switzerland","female"])

#样式支持以下几种:
#DEFAULT、MSWORD_FRIENDLY、PLAIN_COLUMNS、RANDOM
#之前的样式就是DEFAULT
tb.set_style(MSWORD_FRIENDLY)
print(tb)
"""
|name|age|country|gender|
|JackMorrison|49|America|male|
|ShimadaGenji|35|Japan|male|
|ShimadaHanzo|38|Japan|male|
|AngelaZiegler|37|Switzerland|female|
"""

tb.set_style(PLAIN_COLUMNS)
print(tb)
"""
nameagecountrygender
JackMorrison49Americamale
ShimadaGenji35Japanmale
ShimadaHanzo38Japanmale
AngelaZiegler37Switzerlandfemale
"""

tb.set_style(RANDOM)
print(tb)
"""
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
.nameagecountrygender.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
.JackMorrison49Americamale.
.ShimadaGenji35Japanmale.
.ShimadaHanzo38Japanmale.
.AngelaZiegler37Switzerlandfemale.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
"""

说实话,还是默认的 DEFAULT 样式最好看。

设置对齐方式

fromprettytableimport*

tb=PrettyTable(["name","age","country","gender"])
tb.add_row(["JackMorrison",49,"America","male"])
tb.add_row(["ShimadaGenji",35,"Japan","male"])
tb.add_row(["ShimadaHanzo",38,"Japan","male"])
tb.add_row(["AngelaZiegler",37,"Switzerland","female"])

#l代表左对齐,c代表居中,r代表右对齐
#默认居中
tb.align["name"]="l"
tb.align["age"]="c"
tb.align["country"]="r"
print(tb)
"""
+----------------+-----+-------------+--------+
|name|age|country|gender|
+----------------+-----+-------------+--------+
|JackMorrison|49|America|male|
|ShimadaGenji|35|Japan|male|
|ShimadaHanzo|38|Japan|male|
|AngelaZiegler|37|Switzerland|female|
+----------------+-----+-------------+--------+
"""

设置边框样式

在 PrettyTable 中,边框由三个部分组成:横边框,竖边框,和边框连接符,我们都可以修改。

fromprettytableimport*

tb=PrettyTable(["name","age","country","gender"])
tb.add_row(["JackMorrison",49,"America","male"])
tb.add_row(["ShimadaGenji",35,"Japan","male"])
tb.add_row(["ShimadaHanzo",38,"Japan","male"])
tb.add_row(["AngelaZiegler",37,"Switzerland","female"])

#是否显示边框,默认为True
tb.border=True
#横边框
tb.horizontal_char='^'
#竖边框
tb.vertical_char='>'
#边框连接符
tb.junction_char='~'

print(tb)
"""
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
>name>age>country>gender>
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
>JackMorrison>49>America>male>
>ShimadaGenji>35>Japan>male>
>ShimadaHanzo>38>Japan>male>
>AngelaZiegler>37>Switzerland>female>
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
"""

到此这篇关于Python利用prettytable实现格式化输出内容的文章就介绍到这了,更多相关Python prettytable格式化输出内容内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!