Python3电子邮件提取搜索引擎

2024-10-01 02:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

写一个搜索引擎,它将获取一个文件(比如一个html源页面)并提取所有的电子邮件地址。然后,它将按顺序将它们打印出来。文件可能包含大量杂乱的文本(即asda@home无效。。文件中可能有很多@的角色,而不是电子邮件!)在

出于测试目的,这是我一直使用的文本文件:

askdalsd
asd
sad
asd
asd
asd
ad
asd
asda
da
moi1990@gmail.com
masda@sadas
223@home.ca
125512@12451.cpm
domain@name.com
asda
sda
as
da
ketchup@ketchup@#%@#.com
onez!es@gomail.com
asdasda@@@@@email.com
asda@asdasdaad.ca
moee@gmail.com

到目前为止我得到的是:

^{pr2}$

我现在肯定是程序崩溃了。这是输出:

125512@12451.cpm
es@gomail.com
asda@asdasdaad.ca
223@home.ca
moee@gmail.com
moi1990@gmail.com
domain@name.com
Traceback (most recent call last):
  File "D:/Sheridan/Part Time/TELE26529 Linux Architecture w. Network Scripting/Python Assignment 3.5/question1.py", line 17, in <module>
    grab_email('email_addresses.txt')
  File "D:/Sheridan/Part Time/TELE26529 Linux Architecture w. Network Scripting/Python Assignment 3.5/question1.py", line 14, in grab_email
    grab_email(sys.argv[1])
IndexError: list index out of range

我在这里做错了什么?我该怎么解决?如何更有效地处理这些异常?在


Tags: 文件namecomhome电子邮件emaildomaingmail
1条回答
网友
1楼 · 发布于 2024-10-01 02:23:09

问题在于以下部分:

if __name__ == '__main__':
        grab_email(sys.argv[1])

程序正在崩溃,因为它正在^{{cd1>}函数内部处理此操作。由于您是从解释器运行的,所以^{cd2>}语句当然将计算为^{{cd3>}。然后,由于您没有传递任何命令行参数,所以您正在尝试一个非现有的列表元素,从而导致您获得的错误。

去修复,只是德登!它应该是:

^{pr2}$

现在,这将从命令行正确运行(假设您从命令行正确传递文件名)。我也删除了无关函数调用。

当然,如果您只想在解释器中运行这个函数,那么取出if语句并恢复我删除的函数调用。您也可以执行以下操作:

^{pr3}$

这本身并不好,但处理那个特定的错误(同时引入另一个潜在错误)。

相关问题 更多 >