2012-07-02 3 views
0

이 프로그램을 파이썬에서 실행하려고하지만 목록 색인이 if 문 행의 범위를 벗어났습니다. 그러나 그것은 "일치 발견"을 인쇄해야합니다.문자열 비교 및 ​​목록 색인 오류

import csv 
with open('/Users/jadhav/Documents/Hubble files/m4_hubble_1.csv') as f: 
    bl = [[],[],[],[],[]] 
    reader = csv.reader(f) 
    for r in reader: 
     for c in range(5): 
      bl[c].append(r[c]) 

print "The files have now been sorted into lists" 
for c in range(0,999): 
    if bl[4][c] == "HST_10775_64_ACS_WFC_F814W": 
     print "match found" 
    else: 
     del bl[0][c] 
     del bl[1][c] 
     del bl[2][c] 
     del bl[3][c] 
     del bl[4][c] 
+1

사용중인 언어로 질문에 태그를 지정할 수 있습니다. –

+0

범위를 어떻게 선택 했습니까? – javajavajava

+0

각 목록에는 총 1000 개의 요소가 있으므로 999 – user1491298

답변

1

파일의 길이가 999 개 미만인 것처럼 보이므로 bl은 충분히 확장되지 않습니다. 예외 처리를 추가하거나 미리 최대 색인을 계산하거나 요소를 다르게 반복합니다.

0

반복중인 목록에서 항목을 삭제하면 안됩니다.

먼저 을 확인한 다음 bl[0][0]을 삭제하면 나중에 변경됩니다. 현재 999 항목이 목록에 있습니다.

그런 다음 이전에 bl[0][2]했다 bl[0][1]를 확인하고 (원래 bl[0][1]bl[0][0] 지금이다).

등등.

결국 c이 500 일 때 목록에 500 개의 항목 만 있습니다. IndexError!