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



推荐阅读
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
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社区 版权所有