专栏首页早起PythonPython正则表达式的运用与常用的正则表达式(附超有用的小项目练习)

Python正则表达式的运用与常用的正则表达式(附超有用的小项目练习)

在前天我们详细讲解了Python正则表达式相关知识点。那么本文带来的是偷学Python第三十二天:Python正则表达式的运用(附超有用的小项目练习),其他内容将在近期更新完毕。

假装有个标题

昨天将Python中的正则表达式给学习完了,正则表达式在爬虫中是灰常灰常有用的一个工具,因为爬出来的信息多而杂乱,正则表达式和re模块就可以很好的帮助我们来完成这些杂乱信息的分类和处理。

今天就来练习一下正则表达式的应用,然后整理一些常用的正则表达式

电话号码和E-mail地址的提取程序

假如需要在一大篇文章中提取出里面的电话号码和邮箱地址,如果手动的找不仅浪费时间而且还容易漏掉,这个时候就需要编写一个这样的小程序来完成这项任务!

第一步:创建一个匹配电话号码的正则对象

# 正则表达式的样式编译为一个正则对象,使用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

常用的正则表达式

下面是小甜给大家整理的一些常用的正则表达式,拿走就能用!

邮箱地址

本文分享自微信公众号 - 早起Python(zaoqi-python),作者:是甜甜呢

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据分析必备技能|正确解读你的AB实验

    当现在越来越多的app都已经日活百万千万,新功能是绝对不敢、也绝无必要轻易上线的。(因为一旦全量上线引起用户反感,损失不可估计。)这个时候,AB实验就成为了大型...

    刘早起
  • NumPy进阶修炼|矩阵操作20题

    大家好,又到了NumPy进阶修炼专题,其实已经断更很久了,那么在本文正式发布题目之前,先说下改动的地方,在以前的Pandas120题和NumPy热身20题中,我...

    刘早起
  • Django-bootstrap3|在Django中快速使用Bootstrap模版

    关于如何快速基于Django使用别人写好的模版搭建网站之前已经有详细讲过,一般我们在Django中使用Bootstrap模版都需要经过以下几个步骤

    刘早起
  • 在小尺寸人脸检测上发力的S3FD

    人脸检测领域目前主要的难点集中在小尺寸,模糊人脸,以及遮挡人脸的检测,这篇ICCV2017的S3FD(全称:Single Shot Scale-invarian...

    BBuf
  • Socket 通信原理

    什么是Socket? Socket的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。 Socket就像一个电话插座,负责连通两端的电话...

    wangxl
  • 对C语言中指针的入门理解

    Zoctopus
  • 渗透利器 | 提权辅助工具箱

    作为技术宅的我,日常最大的爱好就是逛论坛。某日看到论坛里有一款基于主机的漏洞扫描工具,用来查找主机上公开EXP的CVE。嗯嗯,我想还是叫提权辅助工具可能会更顺口...

    Bypass
  • 技术分享 | 劫持DNS通过流量植入木马实验

    很多时候对目标进行渗透时一般会从web、网络设备、针对性钓鱼这三个方向入手。假设我们控制了目标网络中的一台网络设备,如路由器,内网用户流量会从这个地方经过我们怎...

    FB客服
  • 大数据里面B域,M域,O域具体是指什么

    B域有用户数据和业务数据,比如用户的消费习惯、终端信息、ARPU的分组、业务内容,业务受众人群等。

    cn華少
  • tar归档报错tar: Removing leading `/' from member names

    今天用tar命令归档文件的时候一直提示“tar: Removing leading `/' from member names”

    张琳兮

扫码关注云+社区

领取腾讯云代金券