【发布时间】:2021-03-16 17:26:52
【问题描述】:
我有 2 个字符串:
s1 = "CATS"
s2 = "САTS"
虽然它们看起来一样,但它们并不相同。在 python 或任何方法中比较它们将产生结果FALSE。
如果我尝试使用例如编码它们utf-8 在 python 中:
s1 = s1.encode('utf-8')
s2 = s2.encode('utf-8')
然后打印出来
print(s1)
print(s2)
结果是
b'CATS'
b'\xd0\xa1\xd0\x90TS'
当我比较这两个字符串时,我需要在使用s1==s2 时得到结果TRUE。我应该怎么做才能做到这一点?非常感谢您提供可能的解决方法。
【问题讨论】:
-
你是怎么得到这两个字符串的。显然不是来自简单的赋值语句。第二个字符串显示两个 2 字节字符,后跟 T 和 S。
-
第二个字符串使用西里尔字母
A和C,而另一个字符串显然不是。 -
你可能对Bi-directional transliterator for Python这样的东西感兴趣?
-
我认为问题不在于规范化文本。假设这两个字符串相同,并且这两个字符串已被证明 not 相同。规范化字符串会忽略这个错误,并且 OP 并没有清楚地向我们传达真正的目标是什么。如果它真的将这两个不相等的字符串硬塞到相等,那么我很乐意纠正。
-
嗯,是的,我没有使用标准方法得到它们。这两个是 Google VISION API OCR 方法的巨大输出的一部分......在我的代码中,我经常使用它来从图像中提取文本,这些文本会随着时间的推移而略有变化,并且在许多情况下,一次运行中的字符串为我的 s1 输出并在第二次运行时作为 s2... 我的任务是将它们与以前的输出进行比较以跟踪更改,并且由于不一致,这是一场灾难。
标签: python encoding string-comparison