Python 中 maketrans 與 translate 的用法

Python 中 maketrans 與 translate 的用法

maketrans 和 translate 函數(shù)是進(jìn)行字符串字符編碼的常用方法。首先看下兩個函數(shù)的簽名和用法實例

maketrans

string.maketrans(from, to)

translate

string.translate(s, table[, deletechars])
str.translate(table[, deletechars])
unicode.translate(table)    

實例

import string
map = string.maketrans('123', 'abc')
s = "123345"
    
string.translate(s,map)
#'abcc45'

s.translate(string.maketrans('123', 'aaa'), '5')
#'aaaa4'

s.translate(map)
#'abcc45'

s.translate(string.maketrans('123', 'aaa'))
#'aaaa45'

在《Python CookBook》中有如下代碼

import string 
def translator(from='', to='', delete='', keep=None): 
    if len(to) == 1: 
        to = to * len(from) 
    trans = string.maketrans(from, to) 
    if keep is not None: 
        allchars = string.maketrans('', '') 
        delete = allchars.translate(allchars, keep.translate(allchars,delete)) 
    def translate(s): 
        return s.translate(trans, delete) 
    return translate

這是作者把使用字符串的 translate 方法的需求寫成的一個工廠閉包的形式,這樣可以簡單的創(chuàng)建并且使用它。

實例

digites_only = translator(keep=string.digits)
digites_only("Chris Perkins : 223-2346")
#'2232346'

digits_to_hash = translator(delete=string.digits)
digites_only("Chris Perkins : 223-2346")
#'Chris Perkins : -'

digits_to_hash = translator(from=string.digits, to='#')
digites_only("Chris Perkins : 223-2346")
#'Chris Perkins : ###-####'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容