比较字符串和列表索引错误

时间:2012-07-02 18:27:37

标签: python string list

我试图在python中运行这个程序,但它一直给我一个错误,列表索引超出了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]

2 个答案:

答案 0 :(得分:1)

看起来这些文件的行少于999行,因此bl增长不足。添加异常处理,预先计算最大索引或以不同方式迭代元素。

答案 1 :(得分:0)

您不应该从正在迭代的列表中删除项目。

首先,您检查bl[0][0],然后删除bl[0][0],导致后续版本向下移动。现在列表中有999个项目。

然后您检查bl[0][1],之前为bl[0][2](原bl[0][1]现为bl[0][0])。

等等。

最终,当c为500时,列表中只有500个项目。 IndexError