我一直在使索引超出范围错误

时间:2015-10-17 06:05:13

标签: python list

我基本上都有字典中带有定义的单词。但是我只需要提取这个词。我做了什么使他们成为一个列表,只提取了第一个索引,但我仍然得到索引错误。

rps=open('rootsPrefixesSuffixesnew.txt','r')
rpsnew=open('wordsonly.txt','w')
for words in rps:
    words=words.strip()
    words=words.split()
    words1=list(words)
    print words1[0]

rps.close()
rpsnew.close()

1 个答案:

答案 0 :(得分:2)

你“索引”并且可能得到“索引错误”的唯一地方是print words1[0]行(你当然应该在问题中提供关于你得到错误的行的信息 - 这是写的错误信息)。

如果文件中的行不包含任何单词(例如空行),则会出现此错误。请注意,如果最后一行以换行符结尾,则文件末尾会有一个空行。当然,您也应该提供输入数据的示例。

为了解决这个问题,我们可以检查words1数组的长度,如果行上没有单词,则数组的长度(即单词数)将为零:

rps=open('rootsPrefixesSuffixesnew.txt','r')
rpsnew=open('wordsonly.txt','w')
for words in rps:
    words=words.strip()
    words=words.split()
    words1=list(words)
    if len(words1) == 0:
        continue
    print words1[0]

rps.close()
rpsnew.close()

当然,如果你想把单词放在wordsonly.txt中,你应该在打印时使用print vvron(即print >>rpsnew, words1[0]),这意味着与print相同,除了输出是在雪佛龙之后放入(打开)的文件。此外,您不必复制words它已经是一个列表,因此解决方案可能是:

rps=open('rootsPrefixesSuffixesnew.txt','r')
rpsnew=open('wordsonly.txt','w')
for words in rps:
    words=words.strip()
    words=words.split()
    if len(words) == 0:
        continue
    print >>rpsnew, words[0]

rps.close()
rpsnew.close()