项目3:电话号码和 E-mail 地址提取程序

#! python3
# phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard. 
 
import pyperclip, re 

 # 创建电话的正则表达式
phoneRegex = re.compile(r'''(
   (\d{3}|\(\d{3}\))?  # 区号可选,444或(444)
   (\s|-|\.)?  # 分隔符:字符或-或. 可选
   (\d{3})  # 三个数字
   (\s|-|\.)?  # 分隔符:字符或-或. 可选
   (\d{4})  # 四个数字
   (\s*(ext|x|ext.)\s*(\d{2,5}))?  # extension 
   )''',re.VERBOSE)
 
# 创建email的正则表达式
emailRegex = re.compile(r'''(
[a-zA-Z0-9._%+-]+   # username 
@                               # @ symbol 
[a-zA-Z0-9.-]+           # domain name
(\.[a-zA-Z]{2,4})          # dot-something
)''', re.VERBOSE) 
 
# 匹配剪切板的文本
text = str(pyperclip.paste()) 
#pyperclip.paste()函数从剪贴板上的文本获取一个字符串
matches = []
for groups in phoneRegex.findall(text):
       phoneNum = '-'.join([groups[1], groups[3], groups[5]])
 #findall()返回元组列表,形如:[('415','555','9999'),('212','555','0000')]
 if groups[8] != '':
              phoneNum += ' x' + groups[8]
 #不知道这个groups[8]是什么鬼
        matches.append(phoneNum)
for groups in emailRegex.findall(text):
       matches.append(groups[0]) 
 
# 把处理好的文本复制到剪切板
if len(matches) > 0:
       pyperclip.copy('\n'.join(matches))
       print('Copied to clipboard:')
       print('\n'.join(matches))
else:
       print('No phone numbers or email addresses found.') 

groups变量长这样:
(‘800.420.7240’, ‘800’, ‘.’, ‘420’, ‘.’, ‘7240’)
(‘415.863.9900’, ‘415’, ‘.’, ‘863’, ‘.’, ‘9900’)
(‘415.863.9950’, ‘415’, ‘.’, ‘863’, ‘.’, ‘9950’)
所以groups[0]返回的是整体文本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值