Python 3.x Python:为什么变量看起来与字符串匹配,而输出却相反

Python 3.x Python:为什么变量看起来与字符串匹配,而输出却相反,python-3.x,beautifulsoup,python-requests,Python 3.x,Beautifulsoup,Python Requests,我正在制作一个简单的脚本,检查用户是否退出论坛 def xenforo_check(): url = "http://dfkitcar.com/forum/index.php?login/login" name = "JSATX" headers = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding':'gzip, deflate',

我正在制作一个简单的脚本,检查用户是否退出论坛

def xenforo_check():
    url = "http://dfkitcar.com/forum/index.php?login/login"
    name = "JSATX"
    headers = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding':'gzip, deflate', 'Content-Type':'application/x-www-form-urlencoded'}
    payload = {'login':name}

    response = requests.post(url, data=payload)
    soup = BeautifulSoup(response.text, "html.parser")
    name_result = soup.find("div", class_="blockMessage blockMessage--error blockMessage--iconic").text

    if name_result == "Incorrect password. Please try again.":
        print("user found")
    elif name_result == "The requested user '"+name+"' could not be found.":
        print("user not found")
    else:
        print("possible error")

    print(name_result)

xenforo_check()
对于本例,用户确实存在,因此应打印“用户已找到”。相反,输出是:

possible error

Incorrect password. Please try again.
在我看来,name_结果与“密码不正确,请再试一次”相同,所以我希望它打印“user found”


如果我测试一个不存在的名称,也会出现同样的情况。变量名_结果与字符串不相等。为什么会这样?

你说得对,
name\u结果似乎是一样的,但在测试它进行比较之前,
打印它的内容,看看它到底是什么样子:

>>> print(name_result)
u'\nIncorrect password. Please try again.\n'
因此,它实际上是一个包含不可见字符的
unicode
字符串,即换行符“
\n
”,这是它真正的比较对象,因此它不匹配

但是,如果我们从
文本中删除这些换行符,您应该会得到预期的输出,因此将
strip()
添加到此行:

name_result = soup.find("div", class_="blockMessage blockMessage--error blockMessage--iconic").text.strip()