所以我正在编写代码来读取文件并将内容打印为(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'):