无法在Python 3.1中使用unichr

85 投票
5 回答
78993 浏览
提问于 2025-04-15 19:49

我一直在翻阅《Python Cookbook(第2版)》,想学习如何处理字符串和字符。

我想试着把一个数字转换成它的Unicode对应值。所以我尝试使用一个叫做unichr的内置函数,书里是这么说的:

>>> print repr(unichr(8224))

... 然后会输出:

u'\u2020'

但是,代码出错了。我以为是和print有关(因为Python 3用print()而不是print ""),但这样也没解决问题。我尝试了几种不同的代码,结果还是不行。最后,我只输入了一行简单的代码:

unichr(10000)

让我惊讶的是,不管我在上面的函数里输入什么值,这个错误信息总是弹出来:

 NameError: name 'unichr' is not defined

这可能是什么问题呢?我是不是需要导入某个特定的模块?

5 个回答

7

如果你需要同时在 Python 2 和 Python 3 中运行代码,可以使用这种通用的写法(未使用的写法会指向新的写法)。

try:
    unichr
except NameError:
    unichr = chr
24

在Python 3中,普通字符串和Unicode字符串没有区别了。现在的区别只在于Unicode字符串和二进制数据之间。因此,开发者们最终把unichr这个函数去掉了,取而代之的是一个通用的chr函数,它现在的功能和以前的unichr是一样的。你可以在这里查看相关文档。

111

在Python 3中,你只需要使用 chr 这个函数就可以了:

>>> chr(10000)
'✐'

撰写回答