比较字符串和列表索引

2024-05-15 01:27:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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]

Tags: csvin程序列表forif错误range
2条回答

您不应该从正在迭代的列表中删除项。你知道吗

首先检查bl[0][0],然后删除bl[0][0],导致后面的被下移。现在列表中有999项。你知道吗

然后检查bl[0][1],它以前是bl[0][2](原来的bl[0][1]现在是bl[0][0])。你知道吗

等等。你知道吗

最终,当c是500时,列表中只有500个项目。IndexError!你知道吗

看起来文件的行数少于999行,因此bl的长度不够。添加异常处理、预先计算最大索引或以不同方式迭代元素。你知道吗

相关问题 更多 >

    热门问题