Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 初学者:索引错误-什么';这个密码怎么了?_Python_Index Error - Fatal编程技术网

Python 初学者:索引错误-什么';这个密码怎么了?

Python 初学者:索引错误-什么';这个密码怎么了?,python,index-error,Python,Index Error,如前所述,我是一名初学者,正在尝试做短期练习。不幸的是,我的在线导师不能或不愿意帮助我做这件事(一直建议其他方法) 我的任务是检查行的第一个单词是否为“From”,在这种情况下,我需要打印下一个单词(电子邮件地址) 例如,该文件有一系列行,如下所示 From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008 Return-Path: <postmaster@collab.sakaiproject.org> Received

如前所述,我是一名初学者,正在尝试做短期练习。不幸的是,我的在线导师不能或不愿意帮助我做这件事(一直建议其他方法)

我的任务是检查行的第一个单词是否为“From”,在这种情况下,我需要打印下一个单词(电子邮件地址)

例如,该文件有一系列行,如下所示

From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008    
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.90])  
by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.97])
为此,我编写了以下代码:

fname = "mbox-short.txt"
f = open(fname,'r')

lines = f.readlines()
i = 0
count = len(lines)

while i < count :
    test = lines[i].split()
    if test[0] == "From " :
        print(test[1])
    i += 1
fname=“mbox short.txt”
f=打开(fname,'r')
行=f.读行()
i=0
计数=长度(行)
当我数的时候:
test=行[i].split()
如果测试[0]=“来自”:
打印(测试[1])
i+=1
我不断得到以下错误:

Traceback (most recent call last):
  File "C:\Users\38775\Desktop\py4e\Project 2\email.py", line 10, in <module>
    if test[0] == "From " :
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“C:\Users\38775\Desktop\py4e\Project 2\email.py”,第10行,在
如果测试[0]=“来自”:
索引器:列表索引超出范围
我只是想了解为什么会发生这种情况,以及如何纠正这种情况。请您不要花时间分享备选方案


感谢索引器
表示您试图访问列表中不存在的部分(例如,试图查找
[1,2,3]
的第5个值)。
最好了解文件内容的一小部分或示例输入和所需输出,这样我们就可以准确地找出问题所在。

因此,下面是对您现有内容的修改:

fname = "mbox-short.txt"
f = open(fname,'r')

lines = f.readlines()
i = 0
count = len(lines)


while i < count :
    test = lines[i].strip().split()
    if test[0] == "From":
        print(test[1])
    i += 1
fname=“mbox short.txt”
f=打开(fname,'r')
行=f.读行()
i=0
计数=长度(行)
当我数的时候:
测试=行[i].strip().split()
如果测试[0]=“来自”:
打印(测试[1])
i+=1
在你“剥离()”之后,你从email@email.com". 您需要添加一个“.split()”以将其拆分为一个包含两部分的列表,如下所示 [‘From’,'email@email.com']. 现在,如果test[0]=“From”(如果第一个单词是From),您可以打印test[1],这将是第二个单词(电子邮件)

“.split()”是您的错误,因为它将字符串按空格或所选的其他字符进行拆分

希望这有帮助

谢谢大家

问题是文件中有一些空行,所以我需要嵌套一个if函数来保持它的移动


谢谢

你能给出一些实际的测试用例和它的正确输出吗?你可以调试你的代码。嘿,Rohit,我已经做了编辑。有很多问题本身是错误的。这是我第一次。如果您指出可能会有所帮助。进行了编辑,但错误消息保持不变。谢谢,如果错误信息是相同的,你也必须去掉这个“From”中的空格,它应该是“From”。使用.split()可以消除空格。请尝试复制和粘贴我拥有的内容,测试并获得您想要的输出。谢谢我删除了空格。我也复制并粘贴了你的代码。真是太可怕了,我没办法的时候,你却把我赶走了。
fname = "mbox-short.txt"
f = open(fname,'r')

lines = f.readlines()
i = 0
count = len(lines)


while i < count :
    test = lines[i].strip().split()
    if test[0] == "From":
        print(test[1])
    i += 1