写一个搜索引擎,它将获取一个文件(比如一个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
我在这里做错了什么?我该怎么解决?如何更有效地处理这些异常?在
问题在于以下部分:
程序正在崩溃,因为它正在^{{cd1>}函数内部处理此操作。由于您是从解释器运行的,所以^{cd2>}语句当然将计算为^{{cd3>}。然后,由于您没有传递任何命令行参数,所以您正在尝试一个非现有的列表元素,从而导致您获得的错误。
去修复,只是德登!它应该是:
^{pr2}$现在,这将从命令行正确运行(假设您从命令行正确传递文件名)。我也删除了无关函数调用。
当然,如果您只想在解释器中运行这个函数,那么取出if语句并恢复我删除的函数调用。您也可以执行以下操作:
^{pr3}$这本身并不好,但处理那个特定的错误(同时引入另一个潜在错误)。
相关问题 更多 >
编程相关推荐