遍历文件行提取第二列生成列表时遇索引越界错误求助
问题描述
我尝试遍历自己生成的输出文件中的行,文件内容如下:
2020-03-19, 22.0 2020-03-20, 6.0 2020-03-21, 5.0
希望创建并打印包含第二列数字的列表。以下是我的main函数和存在问题的fReadInputFile函数:
def main(): for file in FILE_PATH_INPUT: fWriteOutputFile(file) print(fReadOutputFile(FILE_PATH_OUTPUT)) def fReadInputFile(pFile): casesList = [] with open(pFile, 'r') as fi: lines = fi.readlines() for line in lines: line = line.rstrip().split(',') casesList.append(str(line[1])) return casesList
预期结果:[22, 6, 5](注:原预期结果中的66应为笔误,对应文件内容应为22)
实际报错:
casesList.append(str(line[1])) IndexError: list index out of range
解决方法
报错原因是某一行经分割后没有索引为1的元素,大概率是文件中存在空行或格式不符合要求的行。按以下方式修复函数即可:
- 跳过空行,避免处理无内容的行
- 先检查分割后的元素数量,确保有至少2个元素再访问索引1
- 按需转换数字类型(原文件第二列为浮点数,可转为整数或保留浮点数,无需转字符串)
修改后的fReadInputFile函数:
def fReadInputFile(pFile): casesList = [] with open(pFile, 'r') as fi: for line in fi: stripped_line = line.strip() # 跳过空行 if not stripped_line: continue parts = stripped_line.split(',') # 确保分割后有至少2个元素 if len(parts) >= 2: # 去除空格并转换为整数(若需保留小数可改用float) num = float(parts[1].strip()) casesList.append(int(num)) return casesList
内容的提问来源于stack exchange,提问作者nina
相关产品推荐
相关产品推荐

