首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我不断得到索引超出范围的错误

我不断得到索引超出范围的错误
EN

Stack Overflow用户
提问于 2015-10-17 14:05:13
回答 1查看 50关注 0票数 -1

我基本上有字典里的单词和它们的定义。但是,我只需要提取单词。我所做的是创建一个列表,并且只提取了第一个索引,但是我仍然得到了一个索引错误。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2015-10-17 14:50:31

您正在“索引”并且可能得到“索引错误”的唯一位置是print words1[0]行(当然,您应该在问题中提供关于您在哪一行上遇到错误的信息-这是写在错误消息中的信息)。

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

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

代码语言:javascript
复制
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 chevron (即print >>rpsnew, words1[0]),这意味着与print相同,只是输出在V形之后被放入(打开的)文件中。此外,您不应该复制words,因为它已经是一个列表,所以解决方案可能是:

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33183388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档