逆向爬虫02 re模块

2023-11-12

python re模块

re是python中自带的正则表达式模块,可以用于正则匹配

1. findall() 将匹配到的所有结果塞进列表并返回

import re
# 匹配字符串中的所有字符'a'
result = re.findall("a", "我是一个abcdefag")
print(result)	# ['a', 'a']

# 匹配字符串中的所有数字
result = re.findall(r"\d+", "我今年18岁,我有2000块")	# 因为反斜杠'\'在字符串中会被当做转移功能,所以要在字符串前面加r
print(result)	# ['18', '2000']

2. finditer() 将匹配到的所有结果塞进迭代器并返回,迭代器中存放的是match对象,需要调用.group()获取匹配结果,迭代器可以优化程序性能,当能匹配到多个对象是,优先使用finditer()

import re
# 匹配字符串中的所有数字
result = re.finditer(r"\d+", "我今年18岁,我有2000块")
print(result)	# <callable_iterator object at 0x0000027D4A293580>
for item in result:
    print(item) # <re.Match object; span=(3, 5), match='18'> <re.Match object; span=(9, 13), match='2000'>
    print(item.group())	# 18, 2000

3. search() 它只返回一个match对象,该对象是finditer()匹配到的第一个对象

import re

result = re.search(r"\d+", "我叫周杰伦,今年32岁,我的班级是3年2班")
print(result.group())	# 32

4. match() 它只返回一个match对象,不同的是match相当于在正则匹配表达式前加上了’^’,即只从字符串开头匹配

import re

result = re.match(r"\d+", "9527,我的编号是9527")		# 正则表达式相当于是r"^\d+"
print(result.group())	# 9527

5. compile() 预加载正则表达式,相当于将正则表达式存储到一个变量中,方便后面调用,而不需要每次都申请内存

import re

obj = re.compile(r"\d+")
result = obj.findall("我叫周杰伦,今年32岁,我的班级是3年2班")
print(result)	# ['32', '3', '2']

6. 如何从正则中提取到我们想要的数据

# 将想要提取的数据用小括号括起来,可以单独取名字
# (?P<名字>正则)
# 提取数据的时候,需要group("名字")
import re

s = """
    <div class='⻄游记'><span id='10010'>中国联通</span></div>
    <div class='⻄游记'><span id='10086'>中国移动</span></div>
"""
# 想要获取上述字符串中的id和text信息
obj = re.compile(r"<span id='(?P<id>\d+)'>(?P<name>.*?)</span>")
result = obj.finditer(s)
for item in result:
    id = item.group("id")
    name = item.group("name")
    print(id, name)	# 10010 中国联通	10086 中国移动
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逆向爬虫02 re模块 的相关文章

随机推荐

  • Python中去掉字符串空格的方法有哪些?

    在Python中 当我们使用Python处理字符串时 经常会遇到字符串中包含空格的情况 那么Python如何去掉字符串空格 有多种方法可以从Python字符串中删除空格 以下是详细内容介绍 1 使用strip 方法 它是一个Python内置
  • KeyError: ‘Transformer/...query\\kernel is not a file in the archive‘,已解决。

    在跑TransUNet时 遇到很多报错 前面的都是一些版本不对应问题 然后遇到了这个源码还未完善的小bug 这个错误主要由字符串地址拼接时Windows和Linux等其他系统不太一样 Windows使用 符号 所以找到字符串拼接的地方加上
  • linux中 .zip .gz .tar 的差别及解压缩命令

    一 Linux下最常用的压缩文件就是 tar了 使用tar程序打出来的包我们常称为tar包 对于tar包 可以再用gz zip等压缩算法再次压缩 比如 jdk 8u181 linux x64 tar gz 二 解压缩命令 tar 可以保留原
  • pe模式下修复usb驱动_伺服驱动器三种控制模式的接线

    我们在平时控制伺服电机的时候 经常用到的控制模式就是三种模式分别是速度控制模式 位置控制模式 转矩控制模式 现以三菱的伺服驱动器为例 下面分别了解一下每个模式的控制接线及其注意事项 一 速度控制模式 注 1 为了防止触电 请务必将伺服放大器
  • python高级培训第五次任务

    使用定时器实现当前时间每秒循环输出一次 import threading import time def run print time strftime Y m d H M S time localtime time time t thre
  • 仿微信实现ListView长按删除

    简言 仿微信做了一个对话列表 长按每个列表项弹出popupwindow进行删除操作 最终效果如下 第一步 制作列表界面 可以是ListView 也可以是RecyclerView 布局大家可以自己设计 本文采用的是ListView 第二步 为
  • blockly

    学习自定义块 视频学习 https developers google com blockly guides create custom blocks blockly developer tools hl zh cn 自定义地址 https
  • 作为一个C++新手,我感兴趣的C++开源项目

    2023年4月30日 周日晚上 昨天完成了一个C 项目后 想再开始一个C 项目 但不知道做什么 于是决定看看有什么好的C 开源项目 今晚在网上逛了一圈后 发现了好多有趣的C 开源项目 参考文章 GitHub Top 10 C 优质开源项目
  • SQLServer连接Pgsql或mysql读写数据

    问题 想把SQLServer的数据库迁移到PgSql里面 因为两个数据库业务表的结构和字段都不一样 需要逐表进行按需抽取想要的字段并导入数据 解决方案 可以在SqlServer里面创建链接服务器 链接到Pgsql的表 然后在SQLServe
  • 如何在Anaconda安装Pygame

    开始之前 先来安装Pygame 可使用pip模块来帮助下载安装python包 要安装Pygame 需在终端提示符下执行如下命令 python m pip install user pygame 对于下载了anaconda用户 可按以下操作
  • cisp-pte考试复盘及常考题型总结

    一 选择题 说基础也不基础 pte的题都是偏实践的那一类 感觉也不算简单 不好好看看还真容易栽这上面 那就太可惜了 比如 DMZ区 php伪协议 谷歌命令 00截断中对php版本的要求等等类似的 二 大题 1 sql注入 1 碎碎念 第一题
  • R语言系统教程(八):绘图命令

    R语言系统教程 八 绘图命令 8 1 高水平绘图函数 8 1 1 plot 函数 8 1 2 显示多变量数据 8 1 3 显示图形 8 2 高水平绘图中的命令 8 2 1 图中的逻辑命令 8 2 2 数据取对数 8 2 3 type 8 2
  • CORS跨域资源共享/一些非同源解决方法

    定义 向不同服务器发送请求 在另一要被访问的服务器端可以这么写 拦截所有请求 app use req res next gt 1 允许哪些客户端访问我 代表允许所有的客户端访问我 注意 如果跨域请求中涉及到cookie信息传递 值不可以为
  • 计算机网络基本概念

    互联网的两个重要基本特点 连通性和共享 计算机网络 由若干结点和连接这些结点的链路组成 网络之间可以通过路由连接起来 构成一个覆盖范围更大的网络 称为互连网 也称为 网络的网络 网络把许多计算机连接在一起 而互连网则把许多网络通过路由器连接
  • SecureCRT常用命令

    常用命令 一 ls 只列出文件名 相当于dir dir也可以使用 A 列出所有文件 包含隐藏文件 l 列表形式 包含文件的绝大部分属性 R 递归显示 help 此命令的帮助 二 cd 改变目录 cd 进入根目录 cd 回到自己的目录 用户不
  • 【HTML、CSS】使用HTML、CSS实现动态爱心

    HTML部分源码 div class box div
  • OpenCV计算机视觉实战 - 文档扫描OCR识别【项目实战】

    纸上得来终觉浅 绝知此事要躬行 B站视频 新课件 https pan baidu com s 1frWHqCVGR2VTn5QBtW4lPA 提取码 xh02 老课件 https pan baidu com s 1Wi31FxSPBqWiu
  • Kubernetes学习之路目录

    Kubernetes基础篇 环境说明 版本说明 系统环境 Centos 7 2 Kubernetes版本 v1 11 2 Docker版本 v18 09 Kubernetes学习之路 一 之概念和架构解析和证书创建和分发Kubernetes
  • c语言empty函数返回结果,C语言:实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置...

    include void init int arr int len int i 0 printf 初始化数组 gt n for i 0 i scanf d arr i void reverse int arr int len int i 0
  • 逆向爬虫02 re模块

    python re模块 re是python中自带的正则表达式模块 可以用于正则匹配 1 findall 将匹配到的所有结果塞进列表并返回 import re 匹配字符串中的所有字符 a result re findall a 我是一个abc