2013-06-25 2 views
0

Я получаю индекс IndexError: string вне диапазона. Каждая строка в файле «document_words» заканчивается на «-99». Поэтому я думаю, что ошибка может быть вызвана тем, что «-99» не преобразуется в int. Но я не уверен. Если это так, то как я могу преобразовать «-99» в int и выйти из цикла.python IndexError: string index out of range

Ниже мой код:

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() 
+0

Какая строка содержит ошибку? – TerryA

+0

Ошибка в этой строке tag = words.readline() [num]. Файл слов будет пустым. Кроме того, вы открыли файл «слов» в режиме только для чтения и пытались записать в него. – rajpy

+0

@Haidro: Я использовал инструкцию печати, она читает первую строку с изображения до -99. Затем дает: Файл «get.py», строка 26, в tag = words.readline() [num] IndexError: индекс строки вне диапазона – nish

ответ

1

Вы не сказали нам, которая не линия, но это выглядит как очевидного

tag = words.readline()[num] 

так num находится за пределами. Я не думаю, что это -99, потому что в этом случае он должен сломаться. Вы можете добавить попробовать/за исключением, чтобы помочь отслеживать его

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

EDIT: Похоже, вы смешиваете вкладки и пространства для отступа. Это нет-нет, если вы не используете 8-значные табуляции