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

Python运行报String Index out of range错误,已确认数组长度足够求排查

IndexError报错排查方案

错误原因

你的报错是由代码里的索引逻辑错误导致的:
input_list[i][j] = input_line[i][j]这行的input_line[i][j]存在两处问题:

  • input_line是当前第i行按\t拆分后的列表,长度只有3,而变量i是遍历整个文件行的索引,当i≥3时,input_line[i]就已经超出了input_line的长度范围,会直接报错
  • 就算你修正为input_line[j],当j≥3时也会超出input_line的长度(input_line只有3个元素,索引0、1、2),你初始化的input_list每个子元素长度为5,剩下的2个位置需要手动补充空值或者其他默认值

修复后可运行代码

# 推荐用with上下文管理器,自动处理文件关闭
with open("WSJ_02-21.pos-chunk", 'r', encoding='utf-8') as file:
    lines = file.readlines()
input_list = [["" for _ in range(5)] for _ in range(len(lines))]
for i in range(len(input_list)):
    input_line = lines[i].strip().split("\t")
    # 空行的情况处理
    if not input_line or len(input_line) == 0:
        continue  # 已经初始化全是空字符串,不需要再重复赋值
    # 正常行有3个字段的情况
    elif len(input_line) == 3:
        # 只遍历input_line的长度,避免越界
        for j in range(len(input_line)):
            input_list[i][j] = input_line[j]

补充说明

如果后续需要对长度为5的子列表后两个位置做其他赋值,可以在上述循环结束后再单独处理对应索引即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:03