python - 打印显示相同的字符串,但如果 == 失败
问题描述
我正在尝试比较 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
解决方案
所以事实证明字符串看起来一样,但是实际数据中有一些意想不到的 unicode Cyrillic 字符,看起来与 ASCII 字符相同。因此,解决方案是运行以下代码将比较字符串与实际字符串进行比较:
print([ord(c) for c in a])
print([ord(c) for c in b])
这表明在实际数据中,存在西里尔字符“М”和“е”,导致字符串比较返回False
。
推荐阅读
- java - Java listIterator() 用 .next() 和 .prev() 给我奇怪的输出
- python - 我想保存到 CSV 但数组是 4D
- java - 需要一个找不到的“de.codecentric.boot.admin.server.config.AdminServerProperties”类型的 bean
- c - 带有 isdigit 和 isalpha 的代码。C 编程语言
- angular - 我的表单在提交 Angular 中返回空值
- python - 将多个数组组合成一个新的数据框
- android - React Native:无需注入代码即可远程重启用户设备中的应用程序
- ffmpeg - FFmpeg 视频在像素完美开始后非常失真
- windows - 在运行时在不同的基地址加载 Windows 可执行文件?
- react-navigation - @react-navigation/bottom-tabs 5.x 引起的启动错误