脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python利用prettytable实现格式化输出内容

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

2022-07-21 17:40古明地觉 Python

Python有一个第三方模块叫 prettytable,专门用来将数据格式输出。本文将通过示例为大家详细讲讲prettytable的用法,感兴趣的可以了解一下

楔子

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from prettytable import PrettyTable
 
# 传入的 name、age、country 相当于表头
tb = PrettyTable(["name""age""country"])
# 调用 add_row 添加行记录
tb.add_row(["Jack Morrison"49"America"])
tb.add_row(["Shimada Genji"35"Japan"])
tb.add_row(["Shimada Hanzo"38"Japan"])
tb.add_row(["Angela Ziegler"37"Switzerland"])
 
print(tb)
"""
+----------------+-----+-------------+
|      name      | age |   country   |
+----------------+-----+-------------+
| Jack Morrison  |  49 |   America   |
| Shimada Genji  |  35 |    Japan    |
| Shimada Hanzo  |  38 |    Japan    |
| Angela Ziegler |  37 | Switzerland |
+----------------+-----+-------------+
"""

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from prettytable import PrettyTable
 
tb = PrettyTable(["name""age""country"])
tb.add_row(["Jack Morrison"49"America"])
tb.add_row(["Shimada Genji"35"Japan"])
tb.add_row(["Shimada Hanzo"38"Japan"])
tb.add_row(["Angela Ziegler"37"Switzerland"])
 
# 调用 add_column 添加一列
tb.add_column("gender",
              ["male""male""male""female"])
print(tb)
"""
+----------------+-----+-------------+--------+
|      name      | age |   country   | gender |
+----------------+-----+-------------+--------+
| Jack Morrison  |  49 |   America   |  male  |
| Shimada Genji  |  35 |    Japan    |  male  |
| Shimada Hanzo  |  38 |    Japan    |  male  |
| Angela Ziegler |  37 | Switzerland | female |
+----------------+-----+-------------+--------+
"""

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

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

输出指定行、指定列

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from prettytable import PrettyTable
 
tb = PrettyTable(["name""age""country""gender"])
tb.add_row(["Jack Morrison"49"America""male"])
tb.add_row(["Shimada Genji"35"Japan""male"])
tb.add_row(["Shimada Hanzo"38"Japan""male"])
tb.add_row(["Angela Ziegler"37"Switzerland""female"])
# 只输出 name 和 age 两列
# start 和 end 表示开始和结束的行数(从 0 开始)
print(tb.get_string(fields=["name""age"],
                    start=1, end=3))
"""
+---------------+-----+
|      name     | age |
+---------------+-----+
| Shimada Genji |  35 |
| Shimada Hanzo |  38 |
+---------------+-----+
"""
 
# 此外可以用来进行排序
print(tb.get_string(sortby="age", reversesort=True))
"""
+----------------+-----+-------------+--------+
|      name      | age |   country   | gender |
+----------------+-----+-------------+--------+
| Jack Morrison  |  49 |   America   |  male  |
| Shimada Hanzo  |  38 |    Japan    |  male  |
| Angela Ziegler |  37 | Switzerland | female |
| Shimada Genji  |  35 |    Japan    |  male  |
+----------------+-----+-------------+--------+
"""

设置表格样式

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from prettytable import *
 
tb = PrettyTable(["name""age""country""gender"])
tb.add_row(["Jack Morrison"49"America""male"])
tb.add_row(["Shimada Genji"35"Japan""male"])
tb.add_row(["Shimada Hanzo"38"Japan""male"])
tb.add_row(["Angela Ziegler"37"Switzerland""female"])
 
# 样式支持以下几种:
# DEFAULT、MSWORD_FRIENDLY、PLAIN_COLUMNS、RANDOM
# 之前的样式就是 DEFAULT
tb.set_style(MSWORD_FRIENDLY)
print(tb)
"""
|      name      | age |   country   | gender |
| Jack Morrison  |  49 |   America   |  male  |
| Shimada Genji  |  35 |    Japan    |  male  |
| Shimada Hanzo  |  38 |    Japan    |  male  |
| Angela Ziegler |  37 | Switzerland | female |
"""
 
tb.set_style(PLAIN_COLUMNS)
print(tb)
"""
     name             age          country          gender        
Jack Morrison          49          America           male         
Shimada Genji          35           Japan            male         
Shimada Hanzo          38           Japan            male         
Angela Ziegler         37        Switzerland        female     
"""
 
tb.set_style(RANDOM)
print(tb)
"""
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
.        name              age           country           gender     .
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
.   Jack Morrison           49           America            male      .
.   Shimada Genji           35            Japan             male      .
.   Shimada Hanzo           38            Japan             male      .
.   Angela Ziegler          37         Switzerland         female     .
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
"""

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

设置对齐方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from prettytable import *
 
tb = PrettyTable(["name""age""country""gender"])
tb.add_row(["Jack Morrison"49"America""male"])
tb.add_row(["Shimada Genji"35"Japan""male"])
tb.add_row(["Shimada Hanzo"38"Japan""male"])
tb.add_row(["Angela Ziegler"37"Switzerland""female"])
 
# l 代表左对齐,c 代表居中,r 代表右对齐
# 默认居中
tb.align["name"= "l"
tb.align["age"= "c"
tb.align["country"= "r"
print(tb)
"""
+----------------+-----+-------------+--------+
| name           | age |     country | gender |
+----------------+-----+-------------+--------+
| Jack Morrison  |  49 |     America |  male  |
| Shimada Genji  |  35 |       Japan |  male  |
| Shimada Hanzo  |  38 |       Japan |  male  |
| Angela Ziegler |  37 | Switzerland | female |
+----------------+-----+-------------+--------+
"""

设置边框样式

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from prettytable import *
 
tb = PrettyTable(["name""age""country""gender"])
tb.add_row(["Jack Morrison"49"America""male"])
tb.add_row(["Shimada Genji"35"Japan""male"])
tb.add_row(["Shimada Hanzo"38"Japan""male"])
tb.add_row(["Angela Ziegler"37"Switzerland""female"])
 
# 是否显示边框,默认为True
tb.border = True
# 横边框
tb.horizontal_char = '^'
# 竖边框
tb.vertical_char = '>'
# 边框连接符
tb.junction_char='~'
 
print(tb)
"""
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
>      name      > age >   country   > gender >
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
> Jack Morrison  >  49 >   America   >  male  >
> Shimada Genji  >  35 >    Japan    >  male  >
> Shimada Hanzo  >  38 >    Japan    >  male  >
> Angela Ziegler >  37 > Switzerland > female >
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
"""

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

原文链接:https://mp.weixin.qq.com/s/lvLKh_8QE7XTW_PQ5ZA40w

延伸 · 阅读

精彩推荐
  • Pythonwx.CheckBox创建复选框控件并响应鼠标点击事件

    wx.CheckBox创建复选框控件并响应鼠标点击事件

    这篇文章主要为大家详细介绍了wx.CheckBox创建复选框控件并响应鼠标点击事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    烈风13022021-02-05
  • Pythonpython rsa 加密解密

    python rsa 加密解密

    本篇文章主要介绍了python rsa加密解密 (编解码,base64编解码)的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧...

    cranezhou10842020-09-24
  • PythonPython sys.argv用法实例

    Python sys.argv用法实例

    这篇文章主要介绍了Python sys.argv用法实例,sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,其它则用来表示获取输入参数,需要的朋友可以参...

    Python教程网4252020-07-09
  • PythonPython lxml库的简单介绍及基本使用讲解

    Python lxml库的简单介绍及基本使用讲解

    lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据,本文重点给大家介绍Python lxml库的简单介绍及基本使用讲解,感兴趣的朋友跟随小编一...

    pinuscembra9472021-08-17
  • Python解决python升级引起的pip执行错误的问题

    解决python升级引起的pip执行错误的问题

    今天小编就为大家分享一篇解决python升级引起的pip执行错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    小白旗12682021-03-04
  • Pythonpython中多层嵌套列表的拆分方法

    python中多层嵌套列表的拆分方法

    今天小编就为大家分享一篇python中多层嵌套列表的拆分方法,具有很好参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    crystalnsd12512021-03-11
  • PythonPython 实现劳拉游戏的实例代码(四连环、重力四子棋)

    Python 实现劳拉游戏的实例代码(四连环、重力四子棋)

    这篇文章主要介绍了Python 实现劳拉游戏的实例代码(四连环、重力四子棋),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参...

    Miku丨无形8272021-09-13
  • PythonPytorch 实现sobel算子的卷积操作详解

    Pytorch 实现sobel算子的卷积操作详解

    今天小编就为大家分享一篇Pytorch 实现sobel算子的卷积操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    洪流之源9412020-04-28