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

Python读取DataFrame导出的txt文件报list index out of range错误如何解决

报错原因与解决方案

报错IndexError: list index out of range出现在account_no = words[0]执行时,本质是words为空列表,不存在下标为0的元素。仅读取该文件时报错,说明问题出在该txt的内容结构和你的读取逻辑不匹配,常见原因及修复方案如下:

核心原因

  • 导出的txt文件存在空行
    你通过to_csv导出文件时,如果no_duplicate_accountsDF包含全为空值的行,或是导出操作自动在文件末尾追加了空行,逐行读取时遇到空行调用split()方法会得到空列表,此时访问[0]就会触发报错。你可以手动打开该txt文件,检查是否存在中间空行或末尾空行。
  • 分割逻辑和导出规则不匹配
    你导出时指定的分隔符为制表符\t,如果读取时调用split()没有指定分隔符,会默认按任意空白字符分割,若行内只有制表符无有效内容,也会得到空列表。
  • 编码不匹配
    读取文件时未指定和导出时一致的编码,可能导致部分行内容解析失败变为空白,分割后得到空列表。

修复方案

读取侧修复(推荐,兼容性更强)

读取时增加空行校验、指定分隔符、增加列表长度判断,避免报错:

filename = 'no_duplicate_accounts.txt'
# 建议和导出时使用相同编码,例如utf-8
with open(filename, 'r', encoding='utf-8') as fhand:
    for line in fhand:
        # 去除行首尾的空白字符
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        # 指定和导出时一致的制表符作为分隔符
        words = line.split('\t')
        # 校验列表长度,避免元素不足
        if len(words) < 1:
            continue
        account_no = words[0]
        # 后续业务逻辑

导出侧修复

导出前清理DataFrame的空行,统一指定编码,从根源避免生成空行:

# 删除全为空值的行
no_duplicate_accountsDF = no_duplicate_accountsDF.dropna(how='all')
no_duplicate_accountsDF.to_csv('no_duplicate_accounts.txt', header = False, 
                               index = False, sep = '\t', encoding='utf-8')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:48:02