我正在关注这本书,并且很确定我已经逐字复制了代码。当我复制发布者网站(nostarch.com/ContactUs)上的“联系我们”页面并通过该程序运行它时,它将输出所有电话号码,但没有电子邮件地址。
我确保代码已正确复制。我以为打印功能可能有问题,所以我尝试将结果粘贴到文本文件中,但仍然找不到电子邮件地址。
import pyperclip, re
# email regex
emailRegex = re.compile(r'''(
[a-zA-Z0-9._%+-]+ # username
@ # at 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.')
我希望得到结果:
Copied to clipboard:
800-420-7240
415-863-9900
415-863-9950
info@nostarch.com
media@nostarch.com
academic@nostarch.com
help@nostarch.com
但只有这个:
Copied to clipboard:
800-420-7240
415-863-9900
415-863-9950
答案 0 :(得分:5)
I made sure the code was copied correctly
-否。您应将{2-4}
替换为{2,4}
,以便根据RegEx语法和第7章文本查找2到4个字符。
您可以考虑使用https://regex101.com/在线尝试正则表达式,并查看正则表达式的完整说明。
答案 1 :(得分:0)
我做了同样的事情-转到该网站并复制了所有文本,而没有查看内容。然后得到与您相同的输出。但是,原因不是因为代码损坏,而是因为我在浏览器中禁用了javascript。显然,如果检测到您未启用javascript(即您是机器人),他们就会隐藏电子邮件。