【问题标题】:IndexError: list index out of range while trying to read a text fileIndexError:尝试读取文本文件时列表索引超出范围
【发布时间】:2025-12-04 13:35:01
【问题描述】:

我正在尝试从输入中创建单词保护程序和阅读器(类似于字典) 我的代码:

if path.exists("data/inputs/" + word2 + ".txt"):
    file = open("data/inputs/" + word2 + ".txt", "r")

    for line in file:
        fields = line.split("; ")
        field1 = fields[0]
        answer=[field1]
        if fields[1]!="":
            field1 = fields[1]
            answer = [field1, field2]

错误:

    if fields[1]!="":
IndexError: list index out of range

我尝试使用范围执行此操作,但出现错误“必须是 int 或索引”, 您能告诉我如何使用这些索引并使其正常工作吗?

【问题讨论】:

  • 显然有一行只有一个字段...检查您的输入,并在访问索引之前检查fields 的长度。

标签: python arrays python-3.x indexing text


【解决方案1】:

表示你的文件至少有一行不包含任何“;”,所以split('; ')的结果只包含一个元素……所以调用fields[1]是一个错误!

如果要测试是否有第二个字段在该行中,应将if fields[1] != "" 替换为if len(fields) > 1

【讨论】:

  • 它包含“;”
  • 文件中至少有一行没有!也许你文件的最后一行是空行?
  • 或者,正如@NomadMonad 所建议的那样,您实际上的意思是 ';'没有空格作为分隔符?
  • “线”是什么意思?一个字只有一行,应该读那行的第二个字,不存在,那是因为“如果”。
  • 使用for line in file 循环遍历文件中的所有行。如果你知道你的文件只包含一行,那么这个循环是没有用的。其次,if fields[1]!="" 这行不是“如果 fields[1] 不存在”,而是“如果 fields[1] 存在并且为空”,这是不同的。在您的情况下,fields[1] 不存在,因此错误