不能在Python 3.1中使用unichr

ano*_*oir 52 python string unicode

我一直在浏览Python Cookbook(第2版),以了解如何处理字符串和字符.

我想尝试将数字转换为其Unicode等价物.所以我尝试使用名为' unichr '内置函数,根据Cookbook,它是这样的:

>>> print repr(unichr(8224))
Run Code Online (Sandbox Code Playgroud)

...并将输出:

u'\u2020'
Run Code Online (Sandbox Code Playgroud)

但是,代码失败了.我认为它与print有关(因为Python 3使用print()而不是print""),但这也没有用.我尝试了几种代码变体,但仍然失败了.最后,我只输入了一个简单的行:

unichr(10000)
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,无论我在上述函数中添加了什么值,这个错误信息都会不断弹出:

 NameError: name 'unichr' is not defined
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 68

在Python 3中,您只需使用chr:

>>> chr(10000)
'?'
Run Code Online (Sandbox Code Playgroud)


And*_*Dog 17

在Python 3中,unicode和普通字符串之间没有任何区别.仅在unicode字符串和二进制数据之间.因此,开发商终于消除了unichr,取而代之的是通用的功能,chr现在做什么旧的unichr一样.请参阅此处的文档.


she*_*bye 7

正如所建议的,是一种更好的方法,因为它兼容 2 和 3:

\n\n
# Python 2 and 3:\nfrom builtins import chr\nassert chr(8364) == \'\xe2\x82\xac\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

pip install future如果发生一些错误,您可能需要。

\n


Jür*_*ard 6

Python 3.x 没有特殊的 Unicode 字符串类型/类。每个字符串都是一个 Unicode 字符串。所以......我会尝试chr。应该给你什么unichrpre-3.x. 无法测试,很遗憾。


mor*_*ork 5

如果您需要在 python 2 和 python 3 中运行,您可以使用这种通用语法(未使用的语法将指向新语法)

try:
    unichr
except NameError:
    unichr = chr
Run Code Online (Sandbox Code Playgroud)