原文出处:http://blog.shine-it.net/python/python%E8%8F%9C%E8%B0%B1-12%E5%AD%97%E7%AC%A6%E4%B8%8E%E6%95%B0%E5%AD%97%E7%BC%96%E7%A0%81%E4%B9%8B%E9%97%B4%E7%9A%84%E4%BA%92%E6%8D%A2
作者:Luther Blissett
中文翻译: Tony Gu(digitalsatori)
问题
将字符转换为ASCII(ISO)或Unicode编码的数字编码,或反之
解决办法
内置函数ord和chr就是专为此而设的:
>>>print ord('a')
>>>97
>>>print chr(97)
>>>a
内置函数ord也可以接受长度为1的Unicode字符串,它可以返回最大到65536的Unicode编码值。如果要从Unicode的数字编码获取Unicode字符串就要用到内置函数unichr:
>>>print ord(u'u2020')
>>>8224
>>>print repr(unichr(8224))
>>>u'\u2020'
讨论
内置函数ord, chr和unichr可以将字符或Unicode字符转变为相应的数字编码,或者相反。注意:chr(n)和str(n)的区别,这是初学者经常会混淆的:
>>>print repr(chr(97))
>>>'a'
>>>print repr(str(97))
>>>'97'
chr将参数中的整数转换并根据ASCII编码返回对应的字符,而str返回的是这个整数的10进制数的字符串。
要将一个字符串转变为字符编码值的列表,可以同时使用内置函数map和ord来完成:
>>> print map(ord, 'ciao')
>>>[99, 105, 97, 111]
要将字符编码值的一个列表转换为字符串,需要使用''.join,map和chr:
>>>print ' '.join(map(chr, range(97, 100)))
>>>abc
参见
Python函数库参考手册关于内置函数chr,ord,unichr的内容,Python in a Nutshell.