我一直在浏览 Python Cookbook(第2版),以了解如何处理字符串和字符。
我想尝试将数字转换为其Unicode等价物。所以我尝试使用built-in function called 'unichr',根据Cookbook,它是这样的:
>>> print repr(unichr(8224))
...并将输出:
u'\u2020'
然而,代码失败了。我认为它与打印有关(因为Python 3使用print()而不是print“”),但这也没有用。我尝试了几种代码变体,但仍然失败了。最后,我只输了一个简单的行:
unichr(10000)
令我惊讶的是,无论我在上述功能中添加了什么价值,这个错误信息都会不断弹出:
NameError: name 'unichr' is not defined
可能是什么问题?是否有一些我应该导入的特定模块?
答案 0 :(得分:61)
在Python 3中,您只需使用chr:
>>> chr(10000)
'✐'
答案 1 :(得分:16)
在Python 3中,unicode和普通字符串之间没有任何区别。仅在unicode字符串和二进制数据之间。因此,开发人员最终删除了unichr
函数,转而使用了一个公共chr
,它现在执行旧unichr
所做的事情。请参阅文档here。
答案 2 :(得分:4)
Python 3.x没有特殊的Unicode字符串类型/类。每个字符串都是一个Unicode字符串。所以...我试试chr
。应该给你unichr
在3.x之前做的事情。遗憾的是,无法测试。
答案 3 :(得分:3)
this所建议的是一种更好的方法,因为它与2和3都兼容。
# Python 2 and 3:
from builtins import chr
assert chr(8364) == '€'
如果发生某些错误,您可能需要pip install future
。
答案 4 :(得分:2)
如果需要同时在python 2和python 3中运行,则可以使用此通用语法 (未使用的语法将指向新语法)
try:
unichr
except NameError:
unichr = chr