打印显示相同的字符串,但如果 == 失败
Print shows the same String but if == fails
我正在尝试比较 2 个字符串,但 == 运算符失败。如果您打印它们,它们似乎具有相同的值。即使类型相同:class str,print(repr( )) 的输出是相同的,.strip() 也无济于事,与 in 运算符比较也失败。
字符串是“Neues Textdokument.txt - Edito”和 windows window 编辑的名字
感谢@Random Davis 的建议,它似乎是一个西里尔字母,看起来和拉丁字母一模一样。但是如果你检查字符串 a 和 b:
print([ord(c) for c in a])
print([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])
这表明在实际数据中,存在西里尔字符“М”和“е”,导致字符串比较为return False
.
我正在尝试比较 2 个字符串,但 == 运算符失败。如果您打印它们,它们似乎具有相同的值。即使类型相同:class str,print(repr( )) 的输出是相同的,.strip() 也无济于事,与 in 运算符比较也失败。
字符串是“Neues Textdokument.txt - Edito”和 windows window 编辑的名字
感谢@Random Davis 的建议,它似乎是一个西里尔字母,看起来和拉丁字母一模一样。但是如果你检查字符串 a 和 b: print([ord(c) for c in a]) print([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])
这表明在实际数据中,存在西里尔字符“М”和“е”,导致字符串比较为return False
.