【问题标题】:Comparing equal strings returns False?比较相等的字符串返回 False?
【发布时间】:2017-01-28 05:18:00
【问题描述】:

所以我正在做一个基本的临时登录验证,只有一个基本的文本文件来“假装”,而应该返回 True 的不是。用户名检查有效,但密码检查无效

@staticmethod
def validate_login(filename,username,password):
    file = open(filename,'r')
    file.readline()
    for line in file:
        i = [i for i, char in enumerate(line) if char == '|']
        print username == line[i[0] + 2:i[1]-1]
        print password == line[i[1] + 2:]
        print password
        print line[i[1] + 2:]
        if username == line[i[0] + 2:i[1]-1] and password == line[i[1] + 2:]:
            file.close()
            print "Login Successful."
            return True

    file.close()
    print "Failed to login. Invalid username or password."
    return False

这是输出结果。密码与文本文件完全匹配,但返回 false。用户名返回 true。到底是什么问题?快把我逼疯了。

True <--- username matched correctly returns true
False <---passwords apparently don't match, returns false.
DopeFiend97 <--password
DopeFiend97

【问题讨论】:

  • 您的密码比较中可能有一个换行符\n。您需要strip() 关闭它。任何不使用split 的理由,例如u, p = line.strip().split('|'); if username == u and password == p): ...
  • 修复它,必须使用 line.strip()

标签: python string comparison


【解决方案1】:

必须使用 .strip() 函数来删除行尾不可预见的字符。

【讨论】:

    最近更新 更多