首页 > 解决方案 > 打印显示相同的字符串,但如果 == 失败

问题描述

我正在尝试比较 2 个字符串,但 == 运算符失败。如果您打印它们,它们似乎具有相同的值。即使类型相同:str 类,print(repr()) 的输出相同,.strip() 也无济于事,并且与 in 运算符比较也失败。

字符串是“Neues Textdokument.txt - Edito”和编辑器的窗口名称

感谢@Random Davis 的建议,那里似乎是一个西里尔字母,看起来与拉丁字母一模一样。但是,如果您使用以下命令检查字符串 a 和 b: print([ord(c) for c in a]) print([ord(c) for c in b]) 它会显示十进制字母的 unicode 编号。它们分别位于 e 和 M

标签: pythonpython-3.xstringcomparisonhwnd

解决方案


所以事实证明字符串看起来一样,但是实际数据中有一些意想不到的 unicode Cyrillic 字符,看起来与 ASCII 字符相同。因此,解决方案是运行以​​下代码将比较字符串与实际字符串进行比较:

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

这表明在实际数据中,存在西里尔字符“М”和“е”,导致字符串比较返回False


推荐阅读