You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取txt文件按制表符分割失效触发IndexError如何解决?

错误原因
  • 分隔符匹配错误:你代码中使用split("\t")按制表符分割每行内容,但你提供的txt文件里日期与数值之间的分隔符是两个空格,并非制表符。调用split("\t")后每行只会生成仅有1个元素的列表,此时访问temp[1]自然触发IndexError索引越界。你看到的所谓"第一行被存入列表"只是报错前的输出缓存,实际上代码在处理第一行时就已经触发错误,没有执行到列表追加的步骤。
  • 变量名使用不规范:你将函数参数、文件对象都命名为file,还使用Python内置关键字list作为自定义列表的变量名,这类命名冲突会引发不可预期的运行异常,属于错误的编码习惯。
  • 逻辑不符合需求:现有代码即使跑通,返回的是每行分割后的子列表组成的二维列表,和你需要的「仅返回右列数值的一维列表」需求不匹配。
修复后的可用代码
def readfile(file_path):
    result = []
    with open(file_path, encoding="utf-8") as f:
        for row in f:
            # 先去除行首尾的换行、多余空白,再按任意空白分割,适配多种分隔符场景
            parts = row.strip().split()
            # 提取右列数值,转换为浮点型后存入结果列表
            result.append(float(parts[1]))
    return result
修复说明
  • 替换了所有冲突的变量名,避免和Python内置关键字、函数参数重名引发异常
  • 改用无参数的split()方法,会自动按任意空白(单个/多个空格、制表符等)分割内容,完全适配你当前的文件格式,也兼容后续分隔符变更的场景
  • 提前调用strip()处理整行内容,可以过滤行首尾的换行、空白字符,避免空行或者带首尾空白的行触发错误
  • 直接提取右列内容并转换为浮点型,符合你需要数值列表的使用需求

内容的提问来源于stack exchange,提问作者dacritical

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:05