python 中的 IndexError: list index out of range?

这是代码:

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

这是什么问题啊。。

当年话下
浏览 2979回答 1
1回答

慕尼黑5688855

一般外部输入的数据都可能存在问题。所以通常在readlines后要做一次处理for line in file.readlines(): &nbsp; &nbsp; &nbsp;if not line.strip():continue &nbsp; &nbsp; &nbsp;r = line.split('\t') &nbsp; &nbsp; &nbsp;if len(r)<3:continue &nbsp; &nbsp; &nbsp;print r &nbsp; &nbsp; &nbsp;try: &nbsp; &nbsp; &nbsp; &nbsp; records.setdefault(int(r[1]), {}) &nbsp; &nbsp; &nbsp; &nbsp; records[int(r[1])].setdefault(int(r[0]), {}) &nbsp; &nbsp; &nbsp; &nbsp; records[int(r[1])][int(r[0])] = float(r[2]) &nbsp; &nbsp; &nbsp;except ValueErro: &nbsp; &nbsp; &nbsp; &nbsp;continue这样就避免了空行,字段数不足,以及类型转换出错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python