美文网首页
Python 中 maketrans 与 translate 的

Python 中 maketrans 与 translate 的

作者: NearTan | 来源:发表于2014-11-22 21:38 被阅读1770次

    Python 中 maketrans 与 translate 的用法

    maketrans 和 translate 函数是进行字符串字符编码的常用方法。首先看下两个函数的签名和用法实例

    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 方法的需求写成的一个工厂闭包的形式,这样可以简单的创建并且使用它。

    实例

    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 : ###-####'
    

    相关文章

      网友评论

          本文标题:Python 中 maketrans 与 translate 的

          本文链接:https://www.haomeiwen.com/subject/iqlwtttx.html