python 中的 IndexError: list index out of range

这是代码:records={}file=open(filepath,'r')forlineinfile.readlines():r=line.split('\t')pri... 这是代码:

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

这是什么问题啊。。
展开
 我来答
喜欢种蘑菇
2019-07-02 · TA获得超过4769个赞
知道答主
回答量:71
采纳率:100%
帮助的人:4.5万
展开全部

”IndexError: list index out of range”这种错误一般有两种情况:

第一种可能情况:list[index], index超出范围,也就是常说的数组越界。

第二种可能情况:list是一个空的,没有一个元素,进行list[0]就会出现该错误,在爬虫问题中很常见,比如有个列表爬去下来为空,统一处理就会报错。

扩展资料:

异常处理特点:

1.在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。

2.发生异常时,控制流立即跳转到关联的异常处理程序(如果存在)。

3.如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误信息。

4.可能导致异常的操作通过 try 关键字来执行。

5.异常处理程序是在异常发生时执行的代码块。在 C# 中,catch 关键字用于定义异常处理程序。

6.程序可以使用 throw 关键字显式地引发异常。

7.异常对象包含有关错误的详细信息,其中包括调用堆栈的状态以及有关错误的文本说明。

8.即使引发了异常,finally 块中的代码也会执行,从而使程序可以释放资源。

参考资料:百度百科——异常处理

ljk1072911239
2018-09-28
知道答主
回答量:3
采纳率:0%
帮助的人:3445
展开全部
.strip()函数
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
增加一行 a = a.strip() #a为报错的变量,这样就能清楚掉空格了,运行速度也快了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdwisyou7d
2013-06-10 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1101万
展开全部
一般外部输入的数据都可能存在问题。所以通常在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

这样就避免了空行,字段数不足,以及类型转换出错。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
matlab2000
2013-06-09 · TA获得超过2323个赞
知道大有可为答主
回答量:1678
采纳率:100%
帮助的人:1067万
展开全部
因为就只有r[0]这个元素,用r[1]当然下表越界了。先用len(r)判断一下长度。
另外 int(r[0]) 或者int(r[1])也可能出异常的,需要保护
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
apricot125
2013-06-09 · TA获得超过750个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:269万
展开全部
IndexError:索引越界
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式