前 言

我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。按某种规则匹配的表达式被称之为正则表达式,在python使用正则表达式,可以使用官方库re来实现,学习re模块之前,我们先来了解一下正则表达式的基本语法。

正 则 表 达 式 语 法

NO.1表示单字符

单字符:即表示一个单独的字符,比如匹配数字用\d ,匹配非数字使用\D,具体规则如下:

NO…2表示数量

如果要匹配某个字符多次,就可以在字符后面加上数量进行表示,具体规则如下:

NO.3表示边界

NO.4匹配分组

NO.5 贪婪模式

贪婪模式:Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;

如下案例:有一个字符串s,我们需要在字符串中匹配3个以上的数字,字符串中数字有8个,贪婪模式会尽可能匹配更多字符,3个以上,8个也是3个以上,那么这里匹配的结果就是8个数字。

非贪婪模式:总是尝试匹配尽可能少的字符,在"*“,”?“,”+“,”",后面加上?,可以关闭贪婪模式
关闭贪婪模式之后,尽可能获取更少的,如下,只获取到最前面的3个数值(至少3个,非贪婪就是最前面的3个)

r e 模 块 的 使 用

在python中使用正则表达式,需要用到re模块来进行操作,这边给大家介绍几个re模块中常用的方法。

No.1 re.match函数

参数说明:接收两个参数,

第一个是匹配的规则,

第二个是匹配的目标字符串,

re.match尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的就是空。

No.2 re.search 方法

参数说明:接收两个参数,

第一个是匹配的规则,

第二个是匹配的目标字符串,

re.search 扫描整个字符串并返回第一个成功的匹配。

re.match与re.search的区别

re.match从字符串的开始位置进行匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回空;

而re.search匹配整个字符串,直到找到一个匹配成功的则进行返回,如果整个字符串中都没有找到匹配成功的,则返回空。

No.3 findall 方法

参数说明:接收两个参数,

第一个是匹配的规则,

第二个是匹配的目标字符串,

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意:match 和 search 是匹配一个结果, findall 匹配处所有符合规则的结果。

No.4 sub 方法

替换字符串中的某些字符,可以用正则表达式来匹配被选子串。

re.sub(pattern, repl, string, count=0 )

参数:
pattern:匹配的规则;
repl:匹配之后替换的新内容;
string:需要按规则替换的字符串;
count:替换的次数,可以不传参,默认替换所有符合规则的。

案 例 演 示

需求:整个正则表达式提取如下接口登录之后返回的token值。

接口地址:

http://47.112.233.130/users/login/请求参数:返回结果:

{'refresh': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY1Mzk4MzMyNSwiaWF0IjoxNjUzODk2OTI1LCJqdGkiOiI2NTE2MTE0OGFhMDY0NWNjYWY2ZWE4YmYzYzY1YjE1ZSIsInVzZXJfaWQiOjJ9.fMkJfOdhczbr1MqvYE5b0qYlC5GewBlFZbrteMOLUv0', 'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjUzOTgzMzI1LCJpYXQiOjE2NTM4OTY5MjUsImp0aSI6ImQ3Nzg1ZjY0YTk2YzQwYzliZDcwMmUxMDgzNjVkNWU5IiwidXNlcl9pZCI6Mn0.UNmLRQsXnZBltgL7QQVuBON2UEBQav87NSGy5Iqbnws'}

实现代码

import requests
import re
# 登录接口
login_url = 'http://47.112.233.130:8888/users/login/'# 请求登录接口,进行登录
params = {"username": "test","password": "123456"
}
response = requests.post(url=login_url, json=params)
#使用正则表达式提取token
result = re.search(r'token":"(.+?)"',response.text)
token = result.group(1)

上述案例中关于token的提取我们使用的是正则表达式,除了正则之外,进行数据提取还有很多方式可以实现,比如jsonpath,xpath等等。jsonpath只能在接口返回的是json格式数据的情况下使用,xpath适用于接口返回的是XML或者HTML时使用。

最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

python 自动化数据提取之正则表达式相关推荐

  1. python自动化数据报告_如何:使用Python将实时数据自动化到您的网站

    python自动化数据报告 This tutorial will be helpful for people who have a website that hosts live data on a ...

  2. python简历数据提取_提取python简介

    书籍:掌握Python的网络和安全 Mastering Python for Networking and Security - 2018.pdf 简介 掌握Python的网络和安全 掌握Python ...

  3. python爬虫数据提取_入门Python爬虫——提取数据篇

    原标题:入门Python爬虫--提取数据篇 作者: 李菲 来源:人工智能学习圈 前言 在提取数据这一环节,爬虫程序会将我们所需要的数据提取出来.在上一篇文章<入门Python爬虫 -- 解析数据 ...

  4. Python 简单数据提取

    学习目标: 提示:简单数据提取 学习内容: import threading as td from selenium import webdriverclass MyThread(td.Thread) ...

  5. python爬虫数据提取,Python 信息提取-爬虫,爬虫提取数据, import re

    Python 信息提取-爬虫,爬虫提取数据, import re import requestsimport refrom bs4 import BeautifulSoupurl = "ht ...

  6. Python自动化:提取扫描件中的文字

    前言 扫描件一直受大众青睐,任何纸质资料在扫描之后进行存档,想使用时手机就能打开,省心省力.但是扫描件的优点也恰恰造成了它的一个缺点,因为是通过电子设备扫描,所以出来的是图像,如果想要处理文件上的内容 ...

  7. 【Python】数据提取xpath和lxml模块(糗事百科的爬虫)

    程序中用到的一些零碎知识点: 一.列表推导式:帮助我们快速生成一堆数据的列表 1.format:字符串格式化的一种方式 >>> ["10月{}日".format( ...

  8. 【Python】数据提取xpath和lxml模块(豆瓣电影排行榜的爬虫)

    xpath xpath:一门从html中提取数据的语言 xpath语法 1.选择节点(标签)    /html/head/meta :能够选中html下的head下的所有的meta标签 2.// :能 ...

  9. python简历数据提取_如何使用pyPDF2从PDF格式的多页简历中提取文本数据?

    我从PDF格式的多页简历中提取文本内容,并尝试使用pyPDF2将内容写入文本文件.但是我在尝试写内容时收到了以下错误消息.在 这是我的代码:import PyPDF2 newFile = open(' ...

最新文章

  1. SQLite的锁的原理:
  2. 开发备必:WEB前端开发规范文档
  3. vue项目的一些需要注意到的细节
  4. 自己常用的wireshark过滤条件
  5. 手机APP移动应用开发
  6. mysql慢查询日志分析工具(python写的)
  7. linux(centos)系统安装activemq
  8. 从获得字符串中获取数字
  9. 《你不可不知的50个艺术知识》之抽象画
  10. 学堂在线计算机,学堂在线PC客户端
  11. VC++中的Win32 Application和Win32 Console Application区别
  12. 怎么做好论文查重,分享几个重查方法
  13. 碳排放计算-20210515
  14. Keras : 利用卷积神经网络CNN对图像进行分类,以mnist数据集为例建立模型并预测
  15. 2018年1月iOS招人心得(附面试题)- 答案整理
  16. Android漏洞查询
  17. NOIP中的数学---第3课 约数
  18. 郭晶晶带霍启刚回京见家长 将赶在明年结婚
  19. python调用google translate API(谷歌翻译) 的使用方法-手动构造HTTP 请求模式
  20. 报刊英语单词精华-5

热门文章

  1. 复制指定目录后缀文件并重命名
  2. cn.sample.mnn.detect A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid
  3. 财经观察:“脱欧”不确定性持续拖累英国经济
  4. 大港油田采油工高级技能操作操作计算机题,采油工技能操作试题.doc
  5. 黄致绮 荣获第六季完美童模全球总决赛 全国总冠军
  6. 【转】如何用 Chrome for Android 做远程遥控 debugging
  7. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG)
  8. 2020届一轮复习之必考选修部分:绝对值不等式(解答题)
  9. J9数字论:现阶段Web3.0存在的问题有哪些
  10. java gettext返回值_JAVA getText() 取不到值