Python Cookbook 第二版 汉化版 [Recipe 1.2] 字符与其对应的数字编码之间的转换

Recipe 1.2. Converting Between Characters and Numeric Codes
Recipe 1.2. 字符与其对应的数字编码之间的转换

Credit: Luther Blissett

问题

您需要在字符与其对应的 ASCII(ISO)编码或 Unicode 编码之间相互转换。

 

解法

内建函数 ord 和 chr 就是专门用来做这件事情的:

>>> print ord('a')
97
>>> print chr(97)
a

内建函数 ord 还可以将长度被视为 1 的 Unicode 字符串作为实参,其返回结果为 Unicode 代码数值(最大到 65536)。若要从 Unicode 代码数值转换为长度视为 1 的 Unicode 字符串,可以使用内建函数 unichr :

>>> print ord(u'/u2020')
8224
>>> print repr(unichr(8224))
u'/u2020'

讨论

这大凡都是普通而无趣的任务,但有些时候,将字符(即 Python 中长度为 1 的字符串)与其对应的 ASCII 码或 Unicode 编码进行相互转换是有用处的。内建函数 ord、chr 和 unichr 满足了这方面的所有需求。特别需要注意的一点是 chr(n) 与 str(n) 之间的天壤之别,初学者有时候会混淆两者的用意:

>>> print repr(chr(97))
'a'
>>> print repr(str(97))
'97'

chr 接收一个较小的整数作为实参,根据 ASCII 标准返回该整数值对应的字符;str 接收任何整数作为参数,返回该整数的十进制的字符串形式。

若要将字符串转换为字符编码组成的列表(list),可以组合使用内建函数 map 和 ord 来完成:

>>> print map(ord, 'ciao')
[99, 105, 97, 111]

若要根据字符编码的列表来构建字符串,可以组合使用 ''.join、map 和 chr 来完成,例如:

>>> print ''.join(map(chr, range(97, 100)))
abc

请参见

Library Reference Python in a Nutshell 一书中关于内建函数 chr、ord 和 unichr 的文档。
 

你可能感兴趣的:(python,list,文档,library,任务,reference)