如何解决Python运行代码时出现的“Index out of range”索引越界错误
问题原因
报错Index out of range指向rec[1],说明调用rec.split(",")拆分单行内容后得到的列表长度小于2,不存在索引为1的元素,通常是以下几种情况导致:
paymast.txt文件中存在空行,空行拆分后得到的列表为[''],长度仅为1- 文件中某行的逗号分隔字段数量不足2,比如只有ID字段、没有后续的姓名等内容,或者行内容缺少分隔逗号
- 文件末尾存在空的换行,遍历到该行时拆分后长度不满足要求
修复方案
你可以在拆分后先校验列表长度,不符合要求的行直接跳过,同时可以打印异常行方便排查源文件的格式问题,修改后的代码如下:
pay = open("paymast.txt","r") sal = open("saltyp.txt","w") heading = pay.readline() for rec in pay: # 先去除首尾空白、跳过空行 rec = rec.strip() if not rec: continue rec = rec.split(",") # 校验字段数是否符合要求 if len(rec) < 6: # 可打印异常行排查问题 print(f"跳过格式异常行:{rec},字段数不足6") continue id = rec[0] name = rec[1] gender = rec[2] code = rec[3] grade = rec[4] salary = rec[5] salary = salary.strip('\n') # 新增换行符,避免所有记录挤在同一行 record = id+","+name+","+gender+","+code+","+grade+","+salary + "\n" if int(salary) < 1500 and gender == "M": sal.write(record) pay.close() sal.close()
内容的提问来源于stack exchange,提问作者Thobekani Kubeka
相关产品推荐
相关产品推荐

