python - 如何在 Python 中读取 Unicode 输入并比较 Unicode 字符串?

标签 python python-2.7 unicode

我在 Python 中工作并希望以 Unicode 格式(即 raw_input 的 Unicode 等价物)读取用户输入(从命令行)?

另外,我想测试 Unicode 字符串是否相等,但标准 == 似乎不起作用。

最佳答案

raw_input()返回由操作系统或 UI 工具编码的字符串。困难在于知道哪个是解码。您可以尝试以下方法:

import sys, locale
text= raw_input().decode(sys.stdin.encoding or locale.getpreferredencoding(True))

在大多数情况下应该可以正常工作。

为了帮助您,我们需要更多关于无法进行 Unicode 比较的数据。但是,这可能是标准化的问题。考虑以下几点:

>>> a1= u'\xeatre'
>>> a2= u'e\u0302tre'

a1a2 等价但不等价:

>>> print a1, a2
être être
>>> print a1 == a2
False

所以您可能想使用 unicodedata.normalize()方法:

>>> import unicodedata as ud
>>> ud.normalize('NFC', a1)
u'\xeatre'
>>> ud.normalize('NFC', a2)
u'\xeatre'
>>> ud.normalize('NFC', a1) == ud.normalize('NFC', a2)
True

如果您向我们提供更多信息,我们或许可以为您提供更多帮助。

关于python - 如何在 Python 中读取 Unicode 输入并比较 Unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477061/

相关文章:

python - Flask-如何从查询中抑制 "None"

python - 返回所有单词的正则表达式,星号之间的任何文本除外

python - 修改一个元素会修改Python中的整列

python - 使用具有 python 2 和 3 兼容性的 getpass

ios - iOS 的转义 Unicode 字符

java - 你如何让 Matlab 为 UTF-16 文本文件编写 BOM(字节顺序标记)?

python - SWIG 将 map vector 转换为 python 字典列表

python - 如果使用铺层条件如何 build ?

python - 如果字符串有重叠区域,则连接它们

python - 在 Pythoncurses 中显示扩展的 Unicode 字符