String 尝试从文本文件读取数据时出现字符串索引超出范围错误

String 尝试从文本文件读取数据时出现字符串索引超出范围错误,string,indexing,String,Indexing,我试图弄明白为什么这段代码返回的字符串索引超出范围错误。我正在做一个更大的项目,并试图把它分解成几个模块。文本文件的代码和内容如下所示。任何帮助都将不胜感激。非常感谢。 肖恩 文本文件内容 肖恩,50岁 维罗妮卡,40岁 nicholas,30添加了索引不能大于字符串长度的附加条件: while index < len(line) and line[index] != ',': ... index += 1 而索引

我试图弄明白为什么这段代码返回的字符串索引超出范围错误。我正在做一个更大的项目,并试图把它分解成几个模块。文本文件的代码和内容如下所示。任何帮助都将不胜感激。非常感谢。 肖恩

文本文件内容 肖恩,50岁 维罗妮卡,40岁
nicholas,30

添加了
索引不能大于字符串长度的附加条件:

while index < len(line) and line[index] != ',':
    ...
    index += 1
而索引
添加
索引不能大于字符串长度的附加条件:

while index < len(line) and line[index] != ',':
    ...
    index += 1
而索引
这正在发生,因为文件中的最后一行没有
\n
,所以第二个循环不会在
nicholas,30
的末尾停止,因为那里没有新行字符,并在循环中
索引
增加后,继续寻找下一个位置,这是不存在的,所以当尝试执行
时,line[index]…
会抛出错误


如果文件末尾有一个空行,则在
nicholas,30
之后有一个
\n
,则错误将发生在下一行。这就是为什么按照@roddar92的建议,检查索引永远不应该大于行长度的原因。但是我想你需要在两个循环中都签入它。

这正在发生,因为文件中的最后一行没有
\n
,所以第二个循环不会在
nicholas,30
的末尾停止,因为那里没有新行字符,并尝试继续寻找下一个位置,在循环内增加
索引之后,当尝试执行
时,这并不存在,而行[index]…
会抛出错误


如果文件末尾有一个空行,则在
nicholas,30
之后有一个
\n
,则错误将发生在下一行。这就是为什么按照@roddar92的建议,检查索引永远不应该大于行长度的原因。但是我想您将需要在两个循环中都签入该复选框。

返回错误的特定行是(而行[index]!='\n'返回错误的特定行是(而行[index]!='\n'