字符串索引超出Python的范围



所以我正在编写代码来读取文件并将内容打印为(fileID, sentenceID, wordID, word)。它一直告诉我for word in line[0].split('ZZ'): IndexError: string index out of range。那么我该如何解决这个问题呢?谢谢。

lineCount = 0
wordCount = 0
for line in file[0].split('ZZ'):
    lineCount +=1
    for word in line[0].split('ZZ'):
        wordCount +=1
        print fileNumber + '|' + str(lineCount) + '|' + str(wordCount) + word +'n'

尝试用for word in line.split('ZZ'):代替for word in line[0].split('ZZ'):

file[0].split('ZZ'):返回字符串列表,因此line是其中一个字符串。line.split('ZZ')将再次返回字符串列表,但现在word将是其中一个字符串。

编辑下面是你的问题在评论中的例子:

line = "one-two threeZZfour five-six seven eight nineZZten"
for word in line.split('ZZ')
    print word
output>>
one-two three
four five-six seven eight nine
ten
for word in line.split('-')
    print word
output>>
one
two threeZZfour five
six seven eight nineZZten
for word in line.split()# or split(' ')
    print word
output>>
one-two
threeZZfour
five-six
seven
eight
nineZZten

让我们看看我们得到了什么,一步一步:

for line in file[0].split('ZZ'):

如果这行是正确的,那么file必须是一个字符串列表(因为split方法)。那么line是什么呢?好吧,split返回一个字符串列表。因此line是一个字符串。

for word in line[0].split('ZZ'):

由于line是字符串,line[0]是单个字符(或空字符串)。这就是事情开始变得没有意义的地方。你得到的错误是由于试图索引一个空字符串,即

>>>''[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

然而,这还不是全部。对单个字符应用split('ZZ')将返回一个包含一个元素的列表——该字符(或空字符串)。现在,for word部分没有意义了,因为您正在迭代一个具有单个字符元素的列表。我不知道这是你想要的…

由于file显然是一个字符串列表,这可能是您要查找的:

for line in file[0].split('ZZ'):
    lineCount+=1
    for word in line.split('ZZ'):

相关内容

  • 没有找到相关文章

最新更新