逆向爬虫02 re模块

逆向爬虫02 re模块,第1张

逆向爬虫02 re模块 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)	# 
for item in result:
    print(item) #  
    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 = """
    中国联通
    中国移动
"""
# 想要获取上述字符串中的id和text信息
obj = re.compile(r"d+)'>(?P.*?)")
result = obj.finditer(s)
for item in result:
    id = item.group("id")
    name = item.group("name")
    print(id, name)	# 10010 中国联通	10086 中国移动

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5680551.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存