热门标签 | 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):使用正则表达式的三部曲



推荐阅读
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文介绍了如何使用 Python 的 Pyglet 库加载并显示图像。Pyglet 是一个用于开发图形用户界面应用的强大工具,特别适用于游戏和多媒体项目。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • 使用 Babylon.js 实现地球模型与切片地图交互(第三部分)
    本文继续探讨在上一章节中构建的地球模型基础上,如何通过自定义的 `CameraEarthWheelControl` 类来实现更精细的地图缩放控制。我们将深入解析该类的实现细节,并展示其在实际项目中的应用。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 本文详细介绍了如何在PyQt5中创建简易对话框,包括对话框的基本结构、布局管理以及源代码实现。通过实例代码,展示了如何设置窗口部件、布局方式及对话框的基本操作。 ... [详细]
  • 本文探讨了Python中的enchant模块及其提供的dict_exists()函数,该函数用于检测特定语言词典的可用性。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • Python正则表达式(Python RegEx)
    Python正则表达式快速参考常用函数:re.match():从字符串的起始位置匹配一个正则表达式。re.search():扫描整个字符串并返回第一个成功的匹配。re.s ... [详细]
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社区 版权所有