我在 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'
a1
和 a2
等价但不等价:
>>> 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/