博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python瓦匠 —— 小项目(找出文本中所的电话号码和邮件地址)
阅读量:7103 次
发布时间:2019-06-28

本文共 2922 字,大约阅读时间需要 9 分钟。

程序设计:

我们要完成的目的:在复制整个文本之后运行程序,就可以粘贴文本中所有电话号码和邮件。

过程:

  • 使用pyperclip模块复制和粘贴字符串。
  • 创建两个正则表达式,一个匹配电话号码,另一个匹配E-mail。
  • 对两个正则表达式找到所有的匹配(findall()方法)。
  • 整理匹配到的字符串格式,放在一个字符串中,用于粘贴。
  • 如果没有找到相关信息,返回提示。 

 第一步:创建一个查找电话号码的正则表达式

#!python3#phoneAndEmail.py - 获取文本中的电话号码和email地址。import pyperclipimport rephoneRegex = re.compile(r'''(     (\d{3}|\(\d{3}\))?  #匹配地区代码(可选)。     (\s|-|\.)?          #电话号码分割字符可以是空格、-、句点。     (\d{3})             #电话号码的前三位     (\s|-|\.)?          #分割     (\d{4})             #后四位     (\s*(ext|x|ext.)\s*(\d{2,5}))?     #可选的分机号     )''',re.VERBOSE)

 

第二步:为E-mail地址创建一个正则表达式

emailRegex = re.compile(r'''(     [a-zA-Z0-9._%+-]+     #用户名     @     [a-zA-Z0-9.-]+        #域名     (\.[a-zA-Z]{2,4})     #匹配两到四个字符     )''',re.VERBOSE)

 

第三步:在剪切板文本中找到所有匹配

使用pyperclip.paste()函数获取一个字符串,内容是剪切板上的文本。

findall()正则表达式方法将返回一个元组的列表。

#找到文本中电话号码和email地址text = str(pyperclip.paste()) #从剪切板上面获得要匹配的文本matches = []                     #用来保存电话号码和email的列表#获得phoneNumfor groups in phoneRegex.findall(text):     phoneNum = '-'.join([groups[1],groups[3],groups[5]])     if groups[8] != ' ' :          phoneNum += ' x' + groups[8]     matches.append(phoneNum)#获得emailfor groups in emailRegex.findall(text):     matches.append(groups[0])

 

第四步:将matches列表中的内容链接成一个字符串,并复制到剪切板中。

因为pyperclip.copy()函数接收的是字符串值,而不是字符串的列表,所以要用join()方法将matches列表链接成字符串。

#将得到的文本复制到剪切板上面if len(matches) > 0:     pyperclip.copy('\n'.join(matches))#链接matches中的字符串链接起来,用\n分割。     print('Phone and email:')     print('\n\n'.join(matches))#没找到号码和email的情况else:     print('文本中没有电话号码和email地址!')

 

 代码整合:

#!python3#phoneAndEmail.py - 获取文本中的电话号码和email地址。import pyperclipimport rephoneRegex = re.compile(r'''(     (\d{3}|\(\d{3}\))?  #匹配地区代码(可选)     (\s|-|\.)?          #电话号码分割字符可以是空格、-、句点     (\d{3})             #电话号码的前三位     (\s|-|\.)?          #分割     (\d{4})             #后四位     (\s*(ext|x|ext.)\s*(\d{2,5}))?     #可选的分机号     )''',re.VERBOSE)emailRegex = re.compile(r'''(     [a-zA-Z0-9._%+-]+     #用户名     @     [a-zA-Z0-9.-]+        #域名     (\.[a-zA-Z]{2,4})     #匹配两到四个字符     )''',re.VERBOSE)#找到文本中电话号码和email地址text = str(pyperclip.paste()) #获取文本matches = []                  #用来保存电话号码和email的列表for groups in phoneRegex.findall(text):     phoneNum = '-'.join([groups[1],groups[3],groups[5]])     if groups[8] != ' ' :          phoneNum += ' x' + groups[8]     matches.append(phoneNum)for groups in emailRegex.findall(text):     matches.append(groups[0])#将得到的文本复制到剪切板上面if len(matches) > 0:     pyperclip.copy('\n'.join(matches))#链接matches中的字符串链接起来,用\n分割。     print('Phone and email')     print('\n\n'.join(matches))else:     print('文本中没有电话号码和email地址!')

运行程序之前。我们首先复制《python快速上手》书中提供的文本。

文本地址:https://nostarch.com/contactus.htm

按住Ctrl-A全选,再复制全文,然后运行该程序。

运行结果如下:

Phone and email:800-420-7240 x415-863-9900 x415-863-9950 xinfo@nostarch.commedia@nostarch.comacademic@nostarch.cominfo@nostarch.com>>>

 此时剪切板上的内容就是上述结果。我们可以使用该程序帮助我们提取大文本中想要的内容。

 

转载于:https://www.cnblogs.com/BeautifulSoup/p/8413471.html

你可能感兴趣的文章
玩转git分支
查看>>
php访问mysql 封装
查看>>
【Objective-C】04-第一个OC程序解析
查看>>
ios的自动转屏
查看>>
【C】——fread函数和read函数的区别
查看>>
js中push和join方法使用介绍
查看>>
Webservices-2.C#创建web服务,及引用访问、代码访问
查看>>
js控制页面的全屏展示和退出全屏显示
查看>>
程序猿的量化交易之路(26)--Cointrader之Listing挂牌实体(13)
查看>>
《Struts2技术内幕》学习笔记
查看>>
开发指南专题八:JEECG微云高速开发平台数据字典
查看>>
CI框架 -- 核心文件 之 Output.php(输出类文件)
查看>>
动态更换view类的背景----StateListDrawable的应用
查看>>
scrapy-redis实现爬虫分布式爬取分析与实现
查看>>
Android仿微信UI布局视图(圆角布局的实现)
查看>>
docker
查看>>
OKR 方法 学习笔记
查看>>
CG资源网 - Maya教程
查看>>
http://blog.sina.com.cn/s/blog_62e1faba010147k4.html
查看>>
CSS默认可继承样式
查看>>