电话号码和E-mail地址提取程序 的实现

时间:2024-03-23 15:26:28

项目——电话号码和E-mail地址提取程序,来自于《Python编程快速上手》这本书。

按照所有书中的说的代码(附在最后),在pycharm里面敲了一遍,其实就是照抄了过来,但是在运行的时候,有如下提示:
电话号码和E-mail地址提取程序 的实现
这也就是说,我现在装的python版本中没有pyperclip这个模块。

没有这个模块,那就安装这个模块,安装步骤如下(我使用的是windows系统):

打开cmd,找到已安装的python的路径,在Scripts这个目录下就可以运行pip命令,安装pyperclip模块了。如下图:
电话号码和E-mail地址提取程序 的实现
输入:pip install pyperclip 后,敲回车,等pip完成就可以。如上图般,就完成了。

现在再次回到pycharm去运行刚才的代码,但是仍然提示:No module named ‘pyperclip’,怎么还是没有这个模块呢?再搜了一下,有位高人说,这是因为没有把pyperclip的文件夹放到pycharm的项目文件夹内。

pyperclip文件夹的位置就在已安装的python的site-packages文件夹内。(比如C:\python3\Lib\site-packages)。复制pyperclip文件夹。

电话号码和E-mail地址提取程序 的实现

然后把刚才复制的文件夹粘贴到pycharm的你正在使用的这个项目文件下。如下:

电话号码和E-mail地址提取程序 的实现
再次回到pycharm,运行刚才的代码(当然,在运行前,需要复制内容到剪贴板【需要复制的内容,会附在此文后面】):

电话号码和E-mail地址提取程序 的实现
运行成功了!

这里需要说一下,此书在运行的步骤里提到要在这个网址http://www.nostarch.com/contactus.htm 去“按下Ctrl-A选择该页的所有文本,按下Ctrl-C将它复制到剪贴板。” 但是,很难打开这个网址。我就生造了一个包含有效内容的txt文档,反正效果就是要让程序在一堆乱起八糟的内容里把我们想要的电话号码和email地址找出来。

-------------------------------分隔符--------------------------------

附件1(从书里照抄的代码)

#! python3

phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard.

import pyperclip, re

phoneRegex = re.compile(r’’’(
(\d{3}|(\d{3}))? # area code
(\s|-|.)? # separator
(\d{3}) # first 3 digits
(\s|-|.) # separator
(\d{4}) # last 4 digits
(\s*(ext|x|ext.)\s*(\d{2,5}))? # extension
)’’’, re.VERBOSE)

Create email regex.

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)

Find matches in clipboard text.

text = str(pyperclip.paste())
matches = []
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])

Copy results to the clipboard.

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.’)

附件2(我生造的含有有效内容的txt文档)

hfaspodfoashf
askldjhflas;ndf
ajklsh;dfsanndj
800-420-7240
lkdfjas;fjsalfnaslnfdkls
(415).863.9900
klsdajf;lasnflknsd
klashdf;lsahgfl;ashioewitre
jw;eiohl;fnasldnflsnf
415 863 9950

[email protected]

[email protected]
ouiynmmikieutkty,hm
[email protected]

kkkllioioy
[email protected]
*&%##@KaTeX parse error: Expected group after '^' at position 1: ^̲^&*(E

(完)