在前天我们详细讲解了Python正则表达式相关知识点。那么本文带来的是偷学Python第三十二天:Python正则表达式的运用(附超有用的小项目练习),其他内容将在近期更新完毕。
昨天将Python中的正则表达式给学习完了,正则表达式在爬虫中是灰常灰常有用的一个工具,因为爬出来的信息多而杂乱,正则表达式和re模块就可以很好的帮助我们来完成这些杂乱信息的分类和处理。
今天就来练习一下正则表达式的应用,然后整理一些常用的正则表达式。
假如需要在一大篇文章中提取出里面的电话号码和邮箱地址,如果手动的找不仅浪费时间而且还容易漏掉,这个时候就需要编写一个这样的小程序来完成这项任务!
第一步:创建一个匹配电话号码的正则对象
# 正则表达式的样式编译为一个正则对象,使用re.X添加注释
phone_regex = re.compile(r"""(0\d{2,3}|\(\d{2,3}\) # 匹配电话号码的开头
([\s-\.])? # 匹配中间的分隔符
(\d{7,8})
)""", re.X)
第二步:创建一个匹配邮箱地址的正则对象(论对象的重要性)
# 第二步穿件检测邮箱的正则
email_regex = re.compile(r"""([a-zA-Z0-9/_%+-]+ # 匹配用户名
@\w+ # 例如:@qq,@193等等
\.[a-zA-Z]{2,4} # 匹配最后一部分
)""", re.X)
第三步:定义一个查找电话号的函数
# 第三步定义一个查找电话号的函数
def phone(file_name):
with open(file_name, encoding="utf8") as file1: # 打开文件命名
file_str = file1.read() # 读取文件内容
phone_content = phone_regex.findall(file_str) # 查找内容
return phone_content
第四步:定义一个打开查找邮箱的函数
# 第四步定义一个打开查找邮箱的函数
def email(file_name):
with open(file_name, encoding="utf8") as file1: # 打开文件命名
file_str = file1.read() # 读取文件内容
email_content = email_regex.findall(file_str) # 查找内容
return email_content
最后一步:将文本内容写入一个文件
# 最后一步将结果写入一个文件
# 测试函数
phones = phone("text.txt")
emails = email("text.txt")
# print(phone)
# print(email)
with open("content.txt", mode="a+", encoding="utf8") as file: # 使用with...as打开文件可以自动关闭
file.write("-------电话-------\n")
for phone in phones:
file.write(phone)
file.write("\n") # 手动加入一个换行
file.write("-------邮箱-------\n")
for email in emails:
file.write(email)
file.write("\n")
到这里就写完了,来测试一下,我随便复制了点东西,然后在里面随便加了点邮箱,电话(国内电话,非手机号)
总之就是非常的乱,主要看结果,使用上面的代码最终结果如下:
反正最后的结果很是完美。
PS:上面用到的信息纯属虚构
输入QQ号判断是否符合标准
"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/31
"""
import re
pattern = r"^[1-9]\d{4,9}$"
while True:
qq = input("请输入QQ:")
qq_match = re.match(pattern, qq)
if qq_match:
print("QQ无误")
break
else:
print("QQ输入有误")
break
下面是小甜给大家整理的一些常用的正则表达式,拿走就能用!
邮箱地址