为什么两个相同的字符串不相等?

时间:2019-04-26 02:38:57

标签: python encoding

我正在尝试在列表中搜索字符串。它们看起来完全一样,但是为什么不相等呢?

l = ['liệu',]
a = bytes(l[0],encoding='utf-8')
print(a)

i = 'liệu'
print(bytes(i,encoding='utf-8'))

print(i==l[0])

当前输出:

b'li\xc3\xaa\xcc\xa3u'
b'li\xe1\xbb\x87u'
False

我们如何使其True

3 个答案:

答案 0 :(得分:1)

将第一个ệ的{​​{1}}复制粘贴到第二个"liệu"中,反之亦然。那应该确保两个都是彼此的精确副本。绝对应该为您提供以下输出:

"liệu"

希望这会有所帮助!

答案 1 :(得分:0)

从字节表示中可以看到,它们都是不同的字符串:

>>> a = 'liệu'
>>> b = 'liệu'
>>> a == a
True
>>> b == b
True
>>> a == b
False

它们在第三个字母后不同

>>> for l1, l2 in zip(a, b):
...     print(l1 == l2)
... 
True
True
False
False

这并不意味着u是不同的,但是可以肯定的是e

答案 2 :(得分:0)

>>> 'ệ'=='ệ'
False

为什么这样?因为它们是不同的字符,但外观相同,所以可以检查unicode table中的两个字符,您会发现它们具有不同的Unicode。

我和您以前遇到过同样的问题,您可以访问我的issue page

相关问题