热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python脚本练习(3):正则表达式实例

分享一个Python

脚本需求:从一个网页中找到所有的电话号码和邮箱地址

 

任务划分与实现:


1、  将网页复制到剪贴板


打开网页“https://nostarch.com/contactus”,Ctrl+A、Ctrl+C

 

2、使用pyperclip库,从剪贴板取得文本


>>> import pyperclip,re

>>> text=str(pyperclip.paste())

>>> text
'Got It\r\nThis website usesCOOKIEs to improve your experience. Learn More\r\nSkip to maincontent\r\n
Home\r\nSearch form\r\nSearch\r\nCatalog\r\nBlog\r\nMedia\r\nWritefor Us\r\nAbout Us\r\nContact Us\r\n
We are currently shipping with some delays.Please see our FAQ.\r\n\r\nTopics\r\nArt & Design\r\nGeneralComputing\r\nHacking & Computer Security\r\n
Hardware /DIY\r\nKids\r\nLEGO®\r\nLinux &BSD\r\nManga\r\nProgramming\r\nPython\r\n
Science & Math\r\nScratch\r\nSystemAdministration\r\nEarly Access\r\nFree ebook edition with every print bookpurchased from nostarch.com!\r\nShopping cart\r\n
0 Items\tTotal: $0.00\r\nUserlogin\r\nLog in\r\nCreate account\r\nContact Us\r\n\r\n
No Starch Press,Inc.\r\n245 8th Street\r\nSan FranciscoCA 94103 USA\r\nPhone: 800.420.7240 or+1 415.863.9900 (9 a.m. to 5 p.m., M-FPST)\r\nFax: +1415.863.9950\r\n\r\n
Reach Us by Email\r\n\r\nGeneral inquiries:info@nostarch.com\r\n
Media requests: media@nostarch.com\r\nAcademic requests:academic@nostarch.com (Further information)\r\nHelp with your order:info@nostarch.com\r\nReach Us on SocialMedia\r\nTwitter\r\nFacebook\r\nInstagram\r\nLinkedin\r\nPinterest\r\n\r\n
Navigation\r\nMyaccount\r\nWant sweet deals?\r\nSign up for our newsletter.\r\n\r\n\r\nAboutUs  | Jobs!  |  Sales and Distribution  | Rights  |  Media |  Academic Requests  | Conferences  |  FAQ |  Contact Us  | Write for Us  |  Privacy\r\n
Copyright 2020No Starch Press,Inc\r\n\r\n'

3、创建正则表达式对象phoneRegex和emailRegex

# Create phone regex.
phoneRegex = re.compile(r'''(
(\d{3}|\(\d{3}\))? # area code
(\s|-|\.)? # separator
(\d{3}) # first 3 digits
(\s|-|\.) # separator
(\d{4}) # last 4 digits
)''', re.VERBOSE)

(\d{3}|\(\d{3}\))? 匹配可选的3个数字区号,(\s|-|\.)?匹配分隔符,(\d{3})匹配3个数字。

# Create email regex.
emailRegex = re.compile(r'''(
[a-zA-Z0-9._%+-]+ # username
@ # @ symbol
[a-zA-Z0-9.-]+ # domain name
(\.[a-zA-Z]{2,4}){1,2} # dot-something
)''',re.VERBOSE)

[a-zA-Z0-9._%+-]+匹配用户名,[a-zA-Z0-9.-]+匹配域名,(\.[a-zA-Z]{2,4}){1,2}匹配.xx


可以看到上面的这种正则表达式写法非常的易读。

 

4、找出文本中所有的电话号码并保存。

matches = []
for groups in phoneRegex.findall(text):
matches.append(groups[0])

其中phoneRegex.findall(text)返回的是元组的列表

>>>phoneRegex.findall(text)
[
('800.420.7240','800', '.', '420', '.', '7240'),
('415.863.9900','415', '.', '863', '.', '9900'),
('415.863.9950','415', '.', '863', '.', '9950')]

最终电话号码保存到数组,如下所示

>>> matches
['800.420.7240', '415.863.9900','415.863.9950']

5、找出文本中所有的E-mail 地址并保存。

for groups in emailRegex.findall(text):
matches.append(groups[0])

6、打印结果

if len(matches) > 0:
print('\n'.join(matches))
else:
print('No phone numbers or email addressesfound.')

如下:

800.420.7240
415.863.9900
415.863.9950
info@nostarch.com
media@nostarch.com
academic@nostarch.com
info@nostarch.com


往期精彩

python脚本练习(1):表格打印

python脚本练习(2):使用正则表达式的三部曲



推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
author-avatar
手机用户2602925213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有