字符串索引在Python中超出范围

时间:2014-03-16 13:05:20

标签: python python-2.7 text-extraction

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

2 个答案:

答案 0 :(得分:0)

尝试使用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

答案 1 :(得分:0)

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

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')应用于单个char将返回一个包含一个元素的列表 - 即char(或空字符串)。现在for word部分没有意义,因为你在一个列表上迭代,其中一个元素是一个char。我不这就是你想要的......

由于文件显然是一个字符串列表,这可能就是你要找的东西:

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