[筆記] 建立python中的字串translator

來源:互聯網
上載者:User

標籤:string   python   

將python中的字串的某些字元轉化為特定字元是經常用到string庫中的maketrans()函數,以及translate()函數。 但是這兩個函數比較抽象: maketrans函數產生的對象是一個表,這個資料結構對初學者並不友好。 tranlate(table, deleteValue)函數所需的第一個參數是個表結構,也就是maketrans的返回值,deleteValue是所要刪除的字元。這第二個參數很彆扭:一個translate函數,有時候還能刪除某些字元。 而且使用過程中,往往兩個函數是在一起使用的,不如直接把合成為一個函數,更加方便。

在使用translator的過程中,我們經常需要四個參數:源字串,目標字串,兩者一一對應,要保留的字元,要刪除的字元。所以,直接以這四個參數為輸入建立新的函數:

import stringdef translator(origin='',target='',delete='',keep=''):    """    keep is primer than delete    but keep without chars in delete    """    if len(target) == 1:        target *= len(origin)    assert(len(target)==len(origin))    if keep != '':        allchars = string.maketrans('','')        keep = keep.translate(allchars,delete)        delete = allchars.translate(allchars,keep)    trans = string.maketrans(origin,target)    def translate(sss):        return sss.translate(trans,delete)    return translate

此時的translator函數需要我們先建構函式,然後再調用返回的函數。

比如

>>>trans = translator(delete=‘abcd‘,keep=‘cdef‘)

>>>trans(‘abcdefgll‘)

‘ef‘

應當注意delete與keep之間的關係。

>>>digit2hash = translator(origin = string.digits,target=‘@‘)

>>>digit2hash(‘myjiayan: 368-346-290‘)

‘myjiayan: @@@[email protected]@@[email protected]@@‘

這就是還算不錯的translator函數。


[筆記] 建立python中的字串translator

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.