为简单列表拆分获取 "list index is out of range"

Getting a "list index is out of range" for a simple list split

我正在尝试将 txt 文档中的行读入列表,但我不断收到消息:IndexError:列表索引超出范围。它指向最后一行 password = usersdoc1.strip() 作为问题。

k = open(filename, 'r')

lines = k.readlines()

for line in lines:

    
    usersdoc=line.strip().split('-')

    username = usersdoc[0].strip()

    password = usersdoc[1].strip()

我正在阅读的文档在每一行上都有用户名和密码,用“-”分隔,我可以打印 usernamepassword 成功,但是当我 运行 我的完整代码时,我只是得到一个错误。我似乎无法弄清楚问题是什么。 Here is the document I am reading

当您的 for 循环到达行时:

Jack

函数 split('-') 仅 returns 具有单个值的列表:“Jack” 所述列表没有索引 [1] 因为它只有一个值,即索引 [0].

要绕过这个问题,您可以根据自己的处理方式做几件事:

完全忽略该行:

for line in lines:
    usersdoc=line.strip().split('-')
    if len(usersdoc) !== 2:
        continue
    username = usersdoc[0].strip()
    password = usersdoc[1].strip()

创建空密码:

for line in lines:
    usersdoc=line.strip().split('-')
    username = usersdoc[0].strip()
    password = usersdoc[1].strip() if usersdoc[1] else ""

我注意到您可能还没有发现,因为 strip() 出现在 split() 之前,如果 [=28= 之间有空格,您的用户名和密码两边仍然可以有空格] 和破折号。