Print显示相同的字符串,但if ==失败



我试图比较2个字符串,但==运算符失败。如果您打印它们,它们似乎具有相同的值。即使类型是相同的:类str, print(repr())的输出是相同的,.strip()也没有帮助,与in操作符的比较也失败。

字符串是"Neues textdocument .txt - Edito"以及编辑器的Windows窗口名称

多亏了@Random Davis的建议,里面似乎有一个西里尔字母,看起来和拉丁字母一模一样。但是如果你检查字符串a和b用:打印([ord(c) for c in a])打印([ord(c) for c in b])它以十进制形式显示该字母的unicode编号。它们在e和M

中分开

所以结果是字符串看起来是一样的,但是在实际数据中有一些意想不到的unicode西里尔字符看起来和ASCII字符一样。因此,解决方案是运行以下代码将比较字符串与实际字符串进行比较:

print([ord(c) for c in a])
print([ord(c) for c in b])

这表明在实际数据中,存在西里尔字符"М"one_answers" configure ",这导致字符串比较返回False

最新更新