Python爬⾍基础——re模块的提取、匹配和替换re是Python的⼀个第三⽅库。
为了能更直观的看出re的效果,我们先新建⼀个HTML⽹页⽂件(可直接复制):
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<footer>
<div>
<div class="email">
Email:re@qq
</div>
<div class="tel">
⼿机号:88888888
</div>
</div>
</footer>
</body>
</html>
## OK,然后我们进⼊主题。
re主要有三个功能:提取、匹配、替换。正则表达式提取中文
1、提取findall:
re.findall(【正则表达式】, 【被提取的字符串】)
注意:返回的类型是列表
我们应如何取出上⽂index.html中的Email或者⼿机号呢:
import re
with open('index.html', 'r', encoding='utf-8') as f:
# 读取index.html
html = f.read()
# 把html中的换⾏符,去掉,也就是替换成空字符串,因为.不能匹配到换⾏符
html = re.sub('\n', '', html)
print(html)
# 定义正则表达式,注意括号
pattern_1 = '<div class="email">(.*?)</div>'
# re.findall(【正则表达式】,【被提取的字符串】),返回类型是列表
ret_1 = re.findall(pattern_1, html)
# 字符串.strip(),可以去除⾸位的空格和换⾏符
print(ret_1[0].strip())
2、匹配match:
re.match(【正则表达式】, 【被匹配的字符串】)
注意:
如果匹配成功,返回<class 're.Match'>对象;
如果匹配不成功,返回None。
我们应如何编写定义密码的正则表达式呢:
import re
# 英⽂字母开头,可包括应为字母,数字、下划线,总位数6-16位
password_pattern = r'^[a-zA-Z][a-zA-Z0-9_]{5,15}$'
# 定义三个密码
pass1 = '1234567'
pass2 = 'k123456'
pass3 = 'k123'
# 打印测试结果,匹配成功返回re.Match对象,不成功返回None
print(re.match(password_pattern, pass1))
print(re.match(password_pattern, pass2))
print(re.match(password_pattern, pass3))
输出结果为:
3、替换sub:
re.sub(【正则表达式】, 【替换成的字符串】, 【被匹配的字符串】)
觉得没看过sub的同学,那只能说明你看笔记不认真了,⽰范代码请看上上⽂~~为我⼼爱的⼥孩~~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论