不能在Python 3.1中使用unichr

时间:2010-02-28 18:11:55

标签: python unicode string

我一直在浏览 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

可能是什么问题?是否有一些我应该导入的特定模块?

5 个答案:

答案 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