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

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

Credit: Luther Blissett

问题

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

 

解法

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

>>> 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 编码进行相互转换是有用处的。内建函数 ordchrunichr 满足了这方面的所有需求。特别需要注意的一点是 chr(n)str(n) 之间的天壤之别,初学者有时候会混淆两者的用意:

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

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

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

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

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

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

请参见

Library Reference Python in a Nutshell 一书中关于内建函数 chrordunichr 的文档。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值