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

Python读取文本文件行首单词触发IndexError报错问题咨询

报错原因与修复方案

根本原因

IndexError: list index out of range是因为你遍历到了空行/全空白行:

  • 你碰到的“匹配到首条符合要求的内容后才报错”,是因为符合要求的行后面紧跟着空行/全空白行,遍历到那行的时候才触发了越界
  • 文本中的空行在执行line.strip()后会得到空字符串""
  • 空字符串调用split()返回的是空列表[],没有索引为0的元素,直接访问就触发越界错误
  • line.startswith("From")不会报错的原因是该方法直接对字符串做前缀判断,空字符串调用只会返回False,不存在越界问题

修复方案

方案1:保留split判断逻辑,先加非空校验

在访问words[0]之前先判断列表是否为空:

file_name = input("Enter file name: ")

try:
  fhandle = open(f"./src/{file_name}", "r")
except:
  print("file open err")
  quit()

for line in fhandle:
  line = line.strip()
  words = line.split()

  # 增加列表非空判断,避免空列表访问索引
  if words and words[0] == "From": 
    print(line)

  if line.startswith("From"): 
    print(line)

fhandle.close()

方案2:直接使用startswith方法(更推荐)

str.startswith()是Python专门用来判断字符串前缀的内置方法,不需要额外拆分字符串为列表,性能更好,代码也更简洁,不需要额外处理空行异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:00:06