我试图用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]
您不应该从正在迭代的列表中删除项。你知道吗
首先检查
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
的长度不够。添加异常处理、预先计算最大索引或以不同方式迭代元素。你知道吗相关问题 更多 >
编程相关推荐