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 的文檔。
 

發佈了134 篇原創文章 · 獲贊 7 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章