python - 这些字符有何不同?

标签 python python-2.7 unicode

我不确定为什么这些字符不同,因为它们在视觉上看起来是一样的。它们是同一角色的不同表现形式吗?或者实际上是不同的角色?是否有一种方法可以检查它们是否相等,从而导致 True

>>> s = u'\u2022' 
>>> ss = '•'
>>> s == ss
False
>>> print u'\u2022' , '•'
• •
>>> ss = unicode(ss)
>>> ss == s
False
>>> repr(ss)
"u'\\xe2\\x80\\xa2'"
>>> repr(s)
"u'\\u2022'"

最佳答案

u"\u2022"(您的s)是一个包含项目符号字符的 Unicode 字符串(类型 unicode)。

"\xe2\x80\xa2"(您的 ss)是一个字节字符串(类型 str),包含用于将项目符号字符编码为 UTF-8。

您可以使用 str.decodeunicode.decode 将一个转换为另一个:

>>> s_encode = s.encode("UTF-8")
>>> s_encode == ss
True

>>> ss_decode = ss.decode("UTF-8")
>>> ss_decode == s
True

关于python - 这些字符有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45338094/

相关文章:

python - 是否可以在不实例化类的情况下导入类方法?

C++ 从非英文文件名和非英文文本中读取

python - 使用 numpy.where() 返回完整数组的索引,其中测试条件位于切片数组中

python - 模拟补丁功能

java - Baum-Welch 实现示例

python - 是否有任何 IDE 提供与 Jupyter notebook 类似的功能?

.net - 是否有将二进制数据打包成 UTF-16 字符串的标准技术?

python - 从列表中删除 unicode 'u' 的最简单方法是什么

python - 根据列重复行

python - SQL join、where、having 子句出现问题