python中prettytable库的使用方法

 更新时间:2023年08月09日 15:00:51   作者:搬砖,攒路费  
prettytable是Python的一个第三方工具库,用于创建漂亮的ASCII表格,本文主要介绍了python中prettytable库的使用方法,使用prettytable可以轻松地将数据可视化为表格,感兴趣的可以了解一下

一 什么是prettytable

prettytable是Python的一个第三方工具库,用于创建漂亮的ASCII表格。它支持带有列标题的表格,还支持颜色和自定义格式。使用prettytable可以轻松地将数据可视化为表格,方便阅读和理解。
因为是第三方工具库,所以要先安装,安装命令如下

pip install prettytable

二 prettytable的简单使用

1. 添加表头

使用field_names来添加表头,传参是一个list对象

from prettytable import PrettyTable
#创建Prettytable实例
tb = PrettyTable()
#添加表头
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
print(tb)

>>>
+--------+------+-----+-----+-----+
| userId | name | sex | age | job |
+--------+------+-----+-----+-----+
+--------+------+-----+-----+-----+

2. 添加行

使用add_row()方法来添加行数据,传参是一个list对象

from prettytable import PrettyTable
#创建Prettytable实例
tb = PrettyTable()
#添加表头
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
#添加行数据
tb.add_row(['123', '张三', '男', '25', 'softtest'])
print(tb)

3. 添加列

使用add_column()方法来添加列数据,add_column()有两个参数:第一个是列标题的名称,类型str;第二个是列对应的value,类型list,如下

from prettytable import PrettyTable
#创建Prettytable实例
tb = PrettyTable()
#添加表头
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
#添加行
tb.add_row(['123', '张三', '男', '25', 'softtest'])
#添加列
tb.add_column('address', ['深圳'])
print(tb)

>>>
+--------+------+-----+-----+----------+---------+
| userId | name | sex | age |   job    | address |
+--------+------+-----+-----+----------+---------+
|  123   | 张三 |  男 |  25 | softtest |   深圳  |
+--------+------+-----+-----+----------+---------+

4. 设置对齐方式

使用align来设置对齐方式,默认居中对齐,其中l是向左对齐,c是居中对齐,r是向右对齐,如下

from prettytable import PrettyTable
#创建Prettytable实例
tb = PrettyTable()
#添加表头
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
#添加行
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_row(['124', '李四', '男', '25', 'Java'])
#添加列
tb.add_column('address', ['深圳', '北京'])
#设置对齐方式align: l,r,c
tb.align = 'l'
print(tb)

>>>
+--------+------+-----+-----+----------+---------+
| userId | name | sex | age | job      | address |
+--------+------+-----+-----+----------+---------+
| 123    | 张三 | 男  | 25  | softtest | 深圳    |
| 124    | 李四 | 男  | 25  | Java     | 北京    |
+--------+------+-----+-----+----------+---------+

5. 设置输出表格样式

使用set_style()来控制数据表格的样式,set_style()默认参数是DEFAULT,如果需要更换为其它方式,则需要import导入后使用,如下

from prettytable import PrettyTable
from prettytable import MARKDOWN, MSWORD_FRIENDLY
#创建Prettytable实例
tb = PrettyTable()
#添加表头
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
#添加行
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_row(['124', '李四', '男', '25', 'Java'])
#添加列
tb.add_column('address', ['深圳', '北京'])
#设置对齐方式align: l,r,c
tb.align = 'l'
#设置输出表格的样式
print("DEFAULT表格样式:")
print(tb)
tb.set_style(MSWORD_FRIENDLY)
print("MSWORD_FRIENDLY表格样式:")
print(tb)
tb.set_style(MARKDOWN)
print("MARKDOWN表格样式:")
print(tb)

>>>
DEFAULT表格样式:
+--------+------+-----+-----+----------+---------+
| userId | name | sex | age | job      | address |
+--------+------+-----+-----+----------+---------+
| 123    | 张三 | 男  | 25  | softtest | 深圳    |
| 124    | 李四 | 男  | 25  | Java     | 北京    |
+--------+------+-----+-----+----------+---------+
MSWORD_FRIENDLY表格样式:
| userId | name | sex | age | job      | address |
| 123    | 张三 | 男  | 25  | softtest | 深圳    |
| 124    | 李四 | 男  | 25  | Java     | 北京    |
MARKDOWN表格样式:
| userId | name | sex | age | job      | address |
|:-------|:-----|:----|:----|:---------|:--------|
| 123    | 张三 | 男  | 25  | softtest | 深圳    |
| 124    | 李四 | 男  | 25  | Java     | 北京    |

6. 自定义边框样式

在prettyble中表格边框由三部分组成:横边框,竖边框和边框连接符,由以下几个属性控制

  • table.border 控制是否显示边框,默认是True
  • table.junction_char 控制边框连接符
  • table.horizontal_char 控制横边框符号
  • table.vertical_char 控制竖边框符号
from prettytable import PrettyTable
#创建Prettytable实例
tb = PrettyTable()
#添加表头
tb.field_names = ['userId', 'name', 'sex', 'age', 'job']
#添加行
tb.add_row(['123', '张三', '男', '25', 'softtest'])
tb.add_row(['124', '李四', '男', '25', 'Java'])
#添加列
tb.add_column('address', ['深圳', '北京'])
#设置对齐方式align: l,r,c
tb.align = 'l'
#自定义边框样式
print("默认边框:")
print(tb)
tb.horizontal_char = '*'  #横边框
tb.vertical_char = '|'    #竖边框
tb.junction_char = '|'    #边框连接符
print("自定义边框:")
print(tb)

>>>
默认边框:
+--------+------+-----+-----+----------+---------+
| userId | name | sex | age | job      | address |
+--------+------+-----+-----+----------+---------+
| 123    | 张三 | 男  | 25  | softtest | 深圳    |
| 124    | 李四 | 男  | 25  | Java     | 北京    |
+--------+------+-----+-----+----------+---------+
自定义边框:
|********|******|*****|*****|**********|*********|
| userId | name | sex | age | job      | address |
|********|******|*****|*****|**********|*********|
| 123    | 张三 | 男  | 25  | softtest | 深圳    |
| 124    | 李四 | 男  | 25  | Java     | 北京    |
|********|******|*****|*****|**********|*********|

7. 其它功能

prettytable还有很多其它功能,可以参考官网或者这篇文章:python用prettytable输出漂亮的表格

三 prettytable在实际中的使用

在实际的接口测试过程中,我们都要对返回的接口进行数据校验,包括但不限于返回状态码,单个字段值。为了能够快速知道,以及美化校验结果,我们可以使用prettytable来进行结果校验输出,如下。

返回接口:

{
  "HEAD": {
    "xTypCod": null,
    "xHdrLen": "203",
    "xSysCod": null,
    "xDskSys": null,
    "xWkeCod": "WdcTrfSetBeg",
    "xKeyVal": null,
    "xIsuCnl": "X86",
    "xEncCod": null,
    "xDalCod": null,
    "xCmmTyp": null,
    "xOrgIsu": null,
    "xPreIsu": null,
    "xEntUsr": "",
    "xUsrPwd": null,
    "xIsuDat": "0",
    "xIsuTim": "0",
    "xMacCod": null,
    "xRtnLvl": null,
    "xRtnCod": "WYZQA76",
    "xDevNbr": null,
    "xTlrNbr": "100025",
    "xRqsNbr": null,
    "xCmmRsv": null,
    "xDocSiz": null,
    "xItvTms": null,
    "xMsgFlg": null,
    "xAppRsv": null
  },
  "BODY": {
    "$ERRORMSG$": [
      {
        "xErrMsg": "WYZQA76锁查步骤表记录失败,批次D019860641"
      }
    ]
  }
}

校验脚本

from prettytable import PrettyTable
import json
import jsonpath
response_data = """
{
  "HEAD": {
    "xTypCod": null,
    "xHdrLen": "203",
    "xSysCod": null,
    "xDskSys": null,
    "xWkeCod": "WdcTrfSetBeg",
    "xKeyVal": null,
    "xIsuCnl": "X86",
    "xEncCod": null,
    "xDalCod": null,
    "xCmmTyp": null,
    "xOrgIsu": null,
    "xPreIsu": null,
    "xEntUsr": "",
    "xUsrPwd": null,
    "xIsuDat": "0",
    "xIsuTim": "0",
    "xMacCod": null,
    "xRtnLvl": null,
    "xRtnCod": "WYZQA76",
    "xDevNbr": null,
    "xTlrNbr": "100025",
    "xRqsNbr": null,
    "xCmmRsv": null,
    "xDocSiz": null,
    "xItvTms": null,
    "xMsgFlg": null,
    "xAppRsv": null
  },
  "BODY": {
    "$ERRORMSG$": [
      {
        "xErrMsg": "WYZQA76锁查步骤表记录失败,批次D019860641"
      }
    ]
  }
}
"""
def validate_data(data: dict, yqz: dict) -> None:
    """
    :param data: 要校验的数据
    :param yqz: 预期值
    :return: None
    """
    data = json.loads(data)
    tb = PrettyTable()
    #添加表头
    tb.field_names = ['比较字段', '预期值', '实际值', '是否通过']
    for k, v in yqz.items():
        #用jsonpath查找预期值字段在返回数据resresponse_data的值
        res = jsonpath.jsonpath(data, '$..' + k)[0]
        if v == res:
            tb.add_row([k, v, res, 'Y'])
        else:
            tb.add_row([k, v, res, 'N'])
    print(tb)
#预期值数据
yqz = {'xRtnCod': 'WYZQA76', 'xErrMsg': 'WYZQA76锁查步骤表记录失败,批次D019860641'}
#结果校验
validate_data(response_data, yqz)

效果

>>>
+----------+------------------------------------------+------------------------------------------+----------+
| 比较字段 |                  预期值                  |                  实际值                  | 是否通过 |
+----------+------------------------------------------+------------------------------------------+----------+
| xRtnCod  |                 WYZQA76                  |                 WYZQA76                  |    Y     |
| xErrMsg  | WYZQA76锁查步骤表记录失败,批次D019860641 | WYZQA76锁查步骤表记录失败,批次D019860641 |    Y     |
+----------+------------------------------------------+------------------------------------------+----------+

上面做了一个简单的演示,实际工作中可以结合自身需求封装成组件或者包,使用效果会更佳。

到此这篇关于python中prettytable库的使用方法的文章就介绍到这了,更多相关python prettytable库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现的序列化和反序列化二叉树算法示例

    Python实现的序列化和反序列化二叉树算法示例

    这篇文章主要介绍了Python实现的序列化和反序列化二叉树算法,结合实例形式分析了Python二叉树的构造、遍历、序列化、反序列化等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Python不同格式打印九九乘法表示例

    Python不同格式打印九九乘法表示例

    大家好,本篇文章主要讲的是Python不同格式打印九九乘法表示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦,方便下次浏览
    2021-12-12
  • python zip,lambda,map函数代码实例

    python zip,lambda,map函数代码实例

    这篇文章主要介绍了python zip,lambda,map函数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python使用Selenium实现浏览器打印预览功能

    Python使用Selenium实现浏览器打印预览功能

    在Web开发中,打印预览是一个常见的功能需求,通过打印预览,我们可以预览和调整网页的打印布局、样式和内容,Python的Selenium库是一个强大的工具,可以自动化浏览器操作,包括打印预览,本文将介绍如何使用Python Selenium库来实现浏览器的打印预览功能
    2023-11-11
  • Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记

    这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下
    2016-05-05
  • python利用pandas分析学生期末成绩实例代码

    python利用pandas分析学生期末成绩实例代码

    pandas是数据分析师最常用的工具之一,这篇文章主要给大家介绍了关于python如何利用pandas分析学生期末成绩的相关资料,文中给出了详细的实现方法,需要的朋友可以参考下
    2021-07-07
  • 浅谈tensorflow中几个随机函数的用法

    浅谈tensorflow中几个随机函数的用法

    今天小编就为大家分享一篇浅谈tensorflow中几个随机函数的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python人工智能human learn绘图创建机器学习模型

    python人工智能human learn绘图创建机器学习模型

    这篇文章主要为大家介绍了python人工智能human learn绘图就可以创建机器学习模型的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • python操作xml文件详细介绍

    python操作xml文件详细介绍

    这篇文章主要介绍了python操作xml文件详细介绍,着重介绍了获取XML标签的属性和值的方法,需要的朋友可以参考下
    2014-06-06
  • Python 使用类写装饰器的小技巧

    Python 使用类写装饰器的小技巧

    装饰器是一个返回函数的函数。写一个装饰器,除了最常见的在函数中定义函数以外,Python还允许使用类来定义一个装饰器。这篇文章给大家分享Python 使用类写装饰器的小技巧,一起看看吧
    2018-09-09

最新评论