从0开始python学习-40.通过正则表达式/json进行接口关联

目录

1. 正则表达式:使用re库(需安装-pip install re),只能提取字符串的数据。

1.1 re.seach:提取一个值,得到的是一个对象,通过下标group(1)取值,如果没有匹配到值则返回None

1.2 re.findall:提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回一个空列表

2. Jsonpath表达式:jsonpath

2.1 jsonpath.jsonpath() 提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回None

2.2 语法规则


响应数据示例

{"code": 200,"messages": "ok","data": [{"name": "宋瑶","time": "2020-09-30 18:58:33","relation": {"mobile": "15811111111","CardType": "身份证"}}]
}

1. 正则表达式:使用re库(需安装-pip install re),只能提取字符串的数据。

1.1 re.seach:提取一个值,得到的是一个对象,通过下标group(1)取值,如果没有匹配到值则返回None

url = 'http://192.168.1.1:8088/list'
data = {"name":"张三","age":18}
res = requests.get(url=url,  data=data)print(res.text)  
search_value = re.search('name="csrf_token" value="(.*?)"', res.text)
print("\n"+search_value.group(1))

正常提取到的情况

.*? 表示匹配任意字符到下一个符合条件的字符

.group(1) 列出第一个括号匹配的部分,适用于有多个括号的情况

 .group(2) 则可以将第二个匹配的部分提取出来

无法提取到的情况,若使用search_value.group(1)则会报错AttributeError,因为并没有提取到任何数据

 

1.2 re.findall:提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回一个空列表

url = 'http://192.168.1.1:8088/list'
data = {"name":"张三","age":18}
res = requests.get(url=url,  data=data)print(res.text)findall_value = re.findall('name="csrf_token" value="(.*?)"', res.text)
print(findall_value[0])

正常提取到情况,提取出角标为0的值

 使用角标的形式提取,若角标值大于了可匹配到的数据总数,则会出现角标越界的情况IndexError

 获取不到时返回空列表

2. Jsonpath表达式:jsonpath

2.1 jsonpath.jsonpath() 提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回None

import requests
import jsonurl = "http://test/project/list"payload = json.dumps({"pageNo": 0,"pageSize": 5,"queryDto": {"projectName": "测试"}
})
headers = {'authInfo': '%7B%22user%22','Content-Type': 'application/json'
}response = requests.post(url, headers=headers, data=payload)
print(response.text)

打印结果为:

{"code": "0","action": "/project/list","msg": "succeeded","data": {"pageNo": 0,"pageSize": 5,"totalRecords": 1,"data": [{"id": "1310935793613242370","projectName": "测试"}]},"timestamp": "2024-01-03 21:33:38","ok": true
}

2.2 语法规则

(1) $ 根节点

(2) $.取子节点

j = jsonpath.jsonpath(response.json(),'$.code')
print(j) 

 

 (3) 取列表中的值:$.上级[角标] .key

j = jsonpath.jsonpath(response.json(),'$.data.data[0].id')
print(j)

表示提取第一层级为data,下一级也是data的列表中的第一组数据中的id的value值。这里可以通过id反写层级

 (4) $..递归取值:会把所有data的value都取出来,以列表形式显示

j = jsonpath.jsonpath(response.json(),'$..data')
print(j)

结果:

 

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

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

相关文章

01、Kafka ------ 下载、安装 ZooKeeper 和 Kafka

目录 Kafka是什么?安装 ZooKeeper下载安装启动 zookeeper 服务器端启动 zookeeper 的命令行客户端工具 安装 Kafka下载安装启动 Kafka 服务器 Kafka是什么? RabbitMQ的性能比ActiveMQ的性能有显著提升。 Kafka的性能比RabbitMQ的性能又有显著提升。 K…

Vue知识总结-上

VUE初识 Vue是一套用于构建用户界面的渐进式(由只需要轻量小巧的核心库构建的简单应用逐渐扩展为可以引入各式各样的Vue组件构建的复杂应用)JavaScript框架 Vue需掌握的内容:Vue基础、Vue-cli、vue-router、vuex、element-ui、vue3 Vue特点 采用组件化模式、提高代…

uView ActionSheet 操作菜单

本组件用于从底部弹出一个操作菜单,供用户选择并返回结果。 本组件功能类似于uni的uni.showActionSheetAPI,配置更加灵活,所有平台都表现一致。 #平台差异说明 App(vue)App(nvue)H5小程序√√…

LeetCode——2397. 被列覆盖的最多行数

通过万岁!!! 题目:给你一个二维数组,然后里面是0和1,然后让你从里面选择numSelect列,使得去掉选择的列以后不存在1的行的数量最少。思路: 看到这个题目,本来以为是每一列…

JavaScript 基础三part1.数组

JavaScript 基础三part1.数组 2.1 数组是什么2.2 数组的基本使用(1)声明(2)取值(3)一些术语(4)遍历数组 2.3 操作数组(1)修改(2)新增&…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -小程序端TabBar搭建

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

ES6中WeakMap和Map的区别

WeakMap和Map都是ES6中新增的数据结构,用于存储键值对。它们之间的主要区别有以下几点: 键类型的限制:在Map中,键可以是任意类型的值(包括基本类型和对象引用),而在WeakMap中,键只能…

el-cascader隐藏某一级的勾选框及vue报错Error in callback for watcher “options“的解决办法

今天用到饿了么的级联选择器时出现了这个报错Error in callback for watcher “options“: “TypeError: Cannot read propertie ‘level‘ of null,因为需求是在不同类型 el-cascader多选的时候默认是可以勾选所有级的选项的,如下图: 包含级联cascader的options、select的…

日常工作 经验总结

1,在使用vue2开发项目时,快捷有效的组件化component 若有参数传递时,可以通过这样传递 在component中: 2,上拉加载,下拉刷新 若是使用局部进行上拉加载 下拉刷新 且需要用到scroll-view时 那么需要切记scroll-view在内被mescroll-uni包裹。若场景有限 对于无数据显示…

三款推荐的 FTP 工具

🥇 版权: 本文由【墨理学AI】原创、在CSDN首发、各位大佬、敬请查阅🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 三款推荐的 FTP 工具filezillawinscpFinalShell SSHXftp❤️ 人生苦短, 欢迎…

Hive - Select 使用 in 限制范围

目录 一.引言 二.Select Uid Info 1.少量 Uid 2.大量 Uid ◆ 建表 ◆ 本地 Load ◆ HDFS Load ◆ Select In 三.总结 一.引言 工业场景下 Hive 表通常使用 uid 作为用户维度构建和更新 Hive 表,当我们需要查询指定批次用户信息时,可以使用 in …

1.4 力扣回溯题

题目一: 77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2&#xff1…

【常用排序算法】快速排序

##快速排序 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法 先从数列中取出一个数作为基准数pivot。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放…

rk3566 armbian修复usb2.0并挂载U盘

文章目录 usb接口修复一 执行命令二 修改rk3566-panther-x2.dts⽂件三 查看是否识别 U盘格式化、挂载一 U盘格式化1.1 查看U盘1.2 查看U盘文件系统类型1.3 格式化为ext4系统 二 挂载U盘2.1 手动挂载2.2 自动挂载(可选) usb接口修复 一 执行命令 将位于…

K8S--部署SpringBoot项目实战

原文网址:K8S--部署SpringBoot项目实战-CSDN博客 简介 本文介绍K8S如何部署SpringBoot项目。 1.生成应用的docker镜像 把SpringBoot项目的jar包打包为docker镜像,见:Docker Compose--部署SpringBoot项目--实战-CSDN博客 创建后的镜像名称…

企业微信开发:自建应用:获取企业微信IP段(用于防火墙配置)

概述 在企业微信开发流程中,为了确保与企业微信API的网络通信安全,并适应防火墙配置要求,开发者需要获取企业微信API服务的IP地址范围。这样,仅允许与企业微信官方通信的合法请求通过防火墙,从而保障数据传输的安全性…

借助开源自定义表单,实现流程化办公

实现流程化办公已经成为众多企业的发展目的和愿望,因为可以为企业提质增效、创造良好效益,因此在现代化职场办公中,流程化办公是众多客户追求的发展目的。开源自定义表单拥有较为突出的优势和特点,可以发挥其应有的市场价值和作用…

Rosalind 040 Distances in Trees

这个问题涉及到图论中的树结构以及如何使用Newick格式来表示树。下面是关键概念的解释和解决问题的方法: 图论中的树理解 树中的唯一路径:在树这种图结构中,任意两个节点之间总是存在一条唯一的路径。这种唯一性是因为树是一个连通的、无循环…

【教学类-综合练习-02】20231208 大3班 数字加减法练习(数字火车、X—Y加法减法、X乘法、X—Y数字分合)

教学情况 时间:20231208 班级:大3班 人数:21 目的:幼儿根据自己的能力水平,选择适合的数学题(多款样式) 在昨天大4班制作的基础上,特地打印一些小纸片数学题(节省纸…

如何在vscode下,启动jupyter连接远程服务器

要使用Jupyter notebook远程连接服务器,可通过以下步骤: step1.首先,需要在远程服务器上安装Jupyter。这可以通过Python的包管理器pip完成: pip install jupyterstep2.然后,在该环境下创建一个新的内核。例如&#x…