python之prettytable库的使用

文章目录

    • 一 什么是prettytable
    • 二 prettytable的简单使用
        • 1. 添加表头
        • 2. 添加行
        • 3. 添加列
        • 4. 设置对齐方式
        • 4. 设置输出表格样式
        • 5. 自定义边框样式
        • 6. 其它功能
    • 三 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     | 北京    |
+--------+------+-----+-----+----------+---------+

4. 设置输出表格样式

使用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     | 北京    |

5. 自定义边框样式

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     | 北京    |
|********|******|*****|*****|**********|*********|

6. 其它功能

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 jsonpathresponse_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     |
+----------+------------------------------------------+------------------------------------------+----------+

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/83049.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Endnote 具体期刊格式检索和下载方法——以nature期刊参考文献格式检索和下载为例

Endnote 具体期刊格式检索和下载方法——以nature期刊参考文献格式检索和下载为例 在外文文章写作时候,有时为了提高写作效率,会用到Endnote文献引用功能。然而,有时可能没有现成的参考文献格式,此时,比较快捷的方式&…

【云原生】kubernetes控制器deployment的使用

目录 ​编辑 1 Controller 控制器 1.1 什么是 Controller 1.2 常见的 Controller 控制器 1.3 Controller 如何管理 Pod 2 Deployment 2.1 创建 deployment 2.2 查看 deployment 2.3 扩缩 deployment 2.4 回滚 deployment 2.5 删除 deployment 1 Controller 控制器 …

【设计模式】观察者模式

什么是观察者模式? 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态…

【Git】标签管理与Git Flow模型

目录 一、操作标签 二、推送标签 三、删除标签 四、Git Flow模型分支设计 一、操作标签 git tag # 查看有哪些标签 git tag [name] # 给最近一次commit打标签 git tag [name] [commitID] #给指定的commit打标签 git tag -a [name] -m desc # 打标签并添加描述 二、推送标…

Titanic细节记录一

目录 chunker header index_col names Series与DataFrame的区别 df.columns del和drop的区别 reset_index loc与iloc的区别 不同的排序方式 sort_values sort_index DataFrame相加 describe函数查看数据基本信息 查看多个列的数据时使用列表 处理缺失值的几种思路 …

Java密码学

密码学 1.1 密码学基本概念 密码在我们的生活中有着重要的作用,那么密码究竟来自何方,为何会产生呢? 密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。…

【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】

文章目录 big.LITTLE 技术背景big.LITTLE 技术详解big.LITTLE 硬件要求 big.LITTLE 软件模型CPU MigrationGlobal Task SchedulingGlobal Task Scheduling比CPU Migration的优势 转自:https://zhuanlan.zhihu.com/p/630981648 如有侵权,请联系删除 big.L…

MySQL的查询方法

单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 要求: 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、…

php后端实现调用高德地图进行POI搜索

对于当前位置或者选定省市位置进行查询 接口实现 /*** 查询地址* ApiTitle (查询地址)* ApiSummary (查询地址)* ApiMethod (POST)* ApiRoute (/api/demo/address)* ApiParams (name"dart", type"integer", requiredtrue, description"省…

TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的

一、TCP/IP四层模型对比OSI七层模型 它们两个定义的一些功能和协议都是差不多的。TCP/IP四层协议模型比我们的七层少了三层,把我们的数据链路层和物理层放在一层里面了,叫做数据链路层(网络接口层),对应网络协议也没有…

openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句

文章目录 openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句35.1 语法格式35.2 参数说明35.3 示例 openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句 修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所…

基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

如何在 Spring Boot 中集成日志框架 SLF4J、Log4j

文章目录 具体步骤附录 笔者的操作环境: Spring Cloud Alibaba:2022.0.0.0-RC2 Spring Cloud:2022.0.0 Spring Boot:3.0.2 Nacos 2.2.3 Maven 3.8.3 JDK 17.0.7 IntelliJ IDEA 2022.3.1 (Ultimate Edition) 具体步骤 因为 …

Three.js光源

目录 Three.js入门 Three.js光源 Three.js阴影 Three.js纹理贴图 本文我们将研究three.js中的灯光类型和JavaScript中的光源,探索不同的光源设置。我们的目标是全面理解光源设置和类型,比如环境光、半球光、矩形光、方向光、点光源和聚光灯。我们将…

智能安防监控:基于Java+SpringBoot实现人脸识别搜索

目录 引言背景介绍目的和重要性 人脸识别技术的基本原理图像采集和预处理特征提取与表示人脸匹配算法 人脸识别搜索的应用领域公告安全和监控社交网络和照片管理 参考实现步骤数据收集与预处理人脸特征提取查询处理 引言 背景介绍 结合人脸识别技术,在工厂、学校、…

Java后台生成ECharts图片

前言 通过echarts的jar包,Java后台生成一张图片,并把图片插入到word中。关于word插图片的代码在下一章。 需要用到的工具PhantomJS,Echarts-convert.js,jquery.js,echarts.js。 1.PhantomJS 介绍 PhantomJS是一个不需要浏览器的富客户端。 官方介绍&…

gitlab-Runner搭建

root wget https://packages.gitlab.com/runner/gitlab-runner/packages/fedora/29/gitlab-runner-12.6.0-1.x86_64.rpm/download.rpm rpm -ivh download.rpm ---- 安装 rpm -Uvh download.rpm -----更新升级 然后运行: gitlab-runner register --url https://git…

泊松损坏图像的快速尺度间小波去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Rocky Linux更换为国内源

Rocky Linux提供的可供切换的源列表:Mirrors - Mirror Manager 其中以 COUNTRY 列为 CN 的是国内源。 选择其中一个Rocky Linux 源使用帮助 — USTC Mirror Help 文档 操作前请做好备份 对于 Rocky Linux 8,使用以下命令替换默认的配置 sed -e s|^mirr…

实现静态资源访问的几种方法

什么是静态资源? 静态资源是指在服务器端存储的不会变化的文件,如HTML、CSS、JavaScript、图片、音频、视频等文件。这些文件一般不包含动态内容,每次请求时返回的内容都是固定的。 为什么要使用静态资源? 提升网站性能&#xf…