0

我得到了 IndexError: string index out of range。文件“document_words”中的每一行都以“-99”结尾。所以我认为错误可能是因为“-99”没有转换为int。但我不确定。如果是这种情况,我如何将“-99”转换为 int 并从循环中中断。

以下是我的代码:

words=open('words','r')
image=open('document_words','r')
data=open('input','a')

linecount=0

for line in image:
    if line.strip():
        linecount+=1

image.read()
image.seek(0,0)
while linecount>0:
    line1=image.readline().split()
    for entry in line1:
        num=int(entry)
        if (num<0):
            print("break from loop")
            break
        else:
            tag=words.readline()[num]
            data.write(str(tag)+' ')
    data.write('\n')
    linecount=linecount-1

data.flush()
data.close()
words.close()
image.close()
4

1 回答 1

1

你还没有告诉我们哪条线失败了,但这看起来很明显

tag = words.readline()[num]

也是如此num。我不认为这是-99因为它应该在这种情况下打破。你可以添加一个 try/except 来帮助追踪它

try:
    tmp = words.readline()
    tag = tmp[num]
except IndexError, e:
    print tmp, num

编辑:看起来你正在为缩进混合制表符和空格。这是一个禁忌,除非您使用 8 个字符的制表位

于 2013-06-25T04:59:55.810 回答