Python - 善用 maketrans, translate 轉換全型數字
Posted on Mar 16, 2018 in Python 程式設計 - 初階 by Amo Chen ‐ 1 min read
進行資料處理時,時常會需要針對一些特殊字元進行轉換,維持資料的一致性。例如,日本人很常輸入全型數字(FULLWIDTH DIGIT),就需要轉為半型數字比較恰當。
但此時用 replace
瘋狂取代就不適合了,可以考慮看看內建的 maketrans
與 translate
幫忙轉換的工作。
直接看以下範例,以下範例會將 ab0123456789中文
中的全型數字轉換為半型數字:
p.s. 本文執行環境 python 3.5
>>> 'ab0123456789中文'.translate(str.maketrans('0123456789', '0123456789'))
'ab0123456789中文'
上述範例中的 str.maketrans('0123456789', '0123456789')
會產生以下的 dictionary ,代表轉換的前後對照表:
{65296: 48,
65297: 49,
65298: 50,
65299: 51,
65300: 52,
65301: 53,
65302: 54,
65303: 55,
65304: 56,
65305: 57}
接著上述的對照表會被傳入 .translate()
中,因此就能夠達成轉換的目的。
用法就是如此簡單,相同的用法也可用在全型英文的轉換上。唯一需要注意的就是 maketrans()
中的參數長度必須相等,否則就會引起以下錯誤:
ValueError: the first two maketrans arguments must have equal length
以上, Happy Coding!