这是代码:records = {} file = open(filepath, 'r') for line in file.readlines(): r = line.split('\t') print r records.setdefault(int(r[1]), {}) records[int(r[1])].setdefault(int(r[0]), {}) records[int(r[1])][int(r[0])] = float(r[2])其中r打印出来是:['15', '3116', '3.0', '1337402827\n']['\n']提示的错误是: records.setdefault(int(r[1]), {})IndexError: list index out of range我换成 print r[1] 的时候,打印出来的是【3116】但是提示的错误是: print r[1]IndexError: list index out of range这是什么问题啊。。
1 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
一般外部输入的数据都可能存在问题。所以通常在readlines后要做一次处理
for line in file.readlines():
if not line.strip():continue
r = line.split('\t')
if len(r)<3:continue
print r
try:
records.setdefault(int(r[1]), {})
records[int(r[1])].setdefault(int(r[0]), {})
records[int(r[1])][int(r[0])] = float(r[2])
except ValueErro:
continue
这样就避免了空行,字段数不足,以及类型转换出错。
添加回答
举报
0/150
提交
取消