打卡学习Python爬虫第三天|python的re模块的使用

ops/2024/11/15 6:18:27/

如何在python程序中使用正则表达式?就是使用re模块

re模块使用:

1、findall查找所有,返回list

python">list = re.findall("n","I love learning English and Chinese!")
print(list)  # 输出结果:['n','n','n','n','n']
list = re.findall(r"\d+","这件物品的长度约为2米,宽度和高度均为50厘米。")
print(list)  # 输出结果:['5','5000']

2、search会进行匹配,返回匹配到的第一个结果,没有匹配到则返回None

python">ret = re.search(r"\d","这件物品的长度约为2米,宽度和高度均为50厘米。").group()
print(ret)  # 输出结果:['5']

3、match只能从字符串的开头进行匹配

python">ret = re.match('a','abc').group()
print(ret)  # a

4、finditer,和findall差不多,只不过这时返回的是迭代器(重点)

python">it = re.finditer("n","I love learning English.")
for el in it:print(el.group())  # 依然需要分组

5、 compile()可以将一个长的正则表达式进行预加载,方便后面的使用

python">obj = re.compile(r'\d{3}')  # 将正则表达式编译为一个正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee')  # 正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  # 结果:123

6、正则表达式中的内容如何单独提取

可以通过分组对正则表达式的内容进行进一步的筛选

python">单独获取到正则表达式中的具体内容可以给分组取名字
s = """
<div class='西游记'><span id='10010'>中国联通</span><div>
"""obj = re.compile(r"<span id='(?P<id>\d+)'>(?P<name>\w+)</span>",re.S)result = obj.search(s)  
print(result.group())  # 结果:<span id='10010'>中国联通</span>
print(result.group("id"))  # 结果:10010 # 获取id组的内容
print(result.group("name"))  # 结果: 中国联通  获取name组的内容

使用案例:

使用finditer的效果:

使用findall的效果:

案例代码: 

python">import re# findall:匹配字符串中所有的符合正则表达式的内容
list = re.findall(r"\d+","我的电话号码是:10086,她的电话是123456")
print(list)# finditer:匹配字符串中所有的符合正则表达式的内容,并返回一个迭代器,从迭代器中拿到内容需要 .group()
iter = re.finditer(r"\d+","我的电话号码是:10086,她的电话是123456")
for i in iter:# print(iter)# print(i)print(i.group()) # 获取匹配到的内容# search:匹配字符串中第一个符合正则表达式的内容,找到返回一个对象,没有找到返回None,search全文匹配
s = re.search(r"\d+","我的电话号码是:10086,她的电话是123456")
print(s.group())# match:匹配字符串时从头匹配
# m = re.match(r"\d+","我的电话号码是:10086,她的电话是123456")
# print(m.group())# 预加载正则表达式,可以重复调用
pattern = re.compile(r"\d+")
list = pattern.findall("我的电话号码是:520522,她的电话是123456")
print(list)
iter = pattern.finditer("我的电话号码是:520520,她的电话是123456")
for i in iter:print(i.group())s = """
<div class='天龙八部'><span id='1'>萧峰</span><div>
<div class='三国演义'><span id='2'>曹操</span><div>
<div class='庆余年'><span id='3'>范闲</span><div>
<div class='射雕英雄'><span id='4'>郭靖</span><div>
<div class='熊出没'><span id='5'>光头强</span><div>
"""
# re .S 忽略换行符(让.匹配换行符)
pattern = re.compile(r"<div class='(?P<class>.*?)'><span id='(?P<id>.*?)'>(?P<name>.*?)</span><div>",re.S)
# list = pattern.findall(s)
list = pattern.finditer(s)
for i in list:# print(i)print(i.group("class"),i.group("id"),i.group("name"))

 


http://www.ppmy.cn/ops/97177.html

相关文章

Epic Games 商店面向欧盟 iPhone 用户上线

Epic Games Store 终于在欧盟推出&#xff0c;为玩家提供了不通过 App Store 就能在 iPhone上访问游戏的途径。在经历了漫长而昂贵的关于支付和竞争对手应用程序店面的法律战&#xff0c;以及公证方面的麻烦之后&#xff0c;Epic Games 成功地为App Store 带来了一个数字店面。…

【pyqt5】QLineEdit中的文本输入限制方式,输入校验规则的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【Pyspark-驯化】一文搞懂Pyspark中表连接的使用技巧

【Pyspark-驯化】一文搞懂Pyspark中表连接的使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微信公众号 &…

重复的DNA序列

题目链接 重复的DNA序列 题目描述 注意点 0 < s.length < 10^5s[i]‘A’、‘C’、‘G’ or ‘T’返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串) 解答思路 使用一个大小为10的滑动窗口存储该区间内的字符组成的字符串&#xff0c;使用哈希表存储任…

如何评估Redis的性能

导语 Redis是一款高性能的内存数据库&#xff0c;被广泛用于缓存、持久化、消息队列等各种场景。为了确保Redis的高性能运行&#xff0c;评估Redis的性能是非常重要的。本文将介绍如何评估Redis的性能&#xff0c;并从问题解决的角度探讨如何优化Redis的性能。 1. 性能评估指…

【前端基础篇】HTML零基础速通

文章目录 前言HTML结构认识HTML标签 HTML文件基本结构标签层次结构 快速生成代码框架HTML常见标签注释标签标题标签段落标签换行标签格式化标签图片标签超链接标签表格标签基本使用合并单元格 列表标签表单标签form标签input标签 label标签select标签textarea标签无语义标签 HT…

基于Python flask的岗位招聘数据分析系统,应用Python、Flask框架、Pyecharts、Wordcloud等技术

基于Python Flask的岗位招聘数据分析系统旨在为企业人力资源部门和求职者提供一个全面的数据分析平台&#xff0c;通过对招聘数据的深度挖掘和可视化展示&#xff0c;帮助用户做出更明智的决策。该系统采用了Python、Flask框架&#xff0c;并结合Pyecharts、Wordcloud等技术&am…

雪花算法理解(1高位+41位时间戳+10位机器位+12位自增序号) 及其使用豆包帮助下一个解决了时钟回拨的代码

背景&#xff1a; 为啥需要雪花算法呢&#xff1f; 1.我们是不希望用UUID的&#xff0c;因为它是字符串&#xff0c;不利于索引的建立。 2.字符串内存占用大。 3.游戏中&#xff0c;我们希望生成的id是有意义的&#xff0c;我们可以根据id去反推出一些业务信息。所以根据唯一的…