python translate方法

string 模块中的translate方法主要应用于一个字符串并返回该字符串的一个拷贝,这个拷贝中的所有字符都将按照传入的第一个参数(翻译表)指定的替换方法来替换,而且第二个参数指定的所有字符都将被删除。该模块的另一个函数maketrans是创建翻译表的工具函数。(翻译表是一个正好有256个字符的字符串t:当你把t作为一个参数传递给translate方法时,原字符串中的每一个字符c,在处理之后都被翻译成字符t[ord(c)])


#- * - coding:utf - 8 -
*-
import string


def translator(frm='', to='', delete='', keep=None):
    if len(to) == 1:
        to = to * len(frm)
    trans = string.maketrans(frm, to)
    if keep is not None:
        allchar = string.maketrans('', '')
        print 'allchar=', allchar
        delete = allchar.translate(allchar, keep.translate(allchar, delete))
        # delete=keep.translate(allchar,delete)

    def translate(s):
        return s.translate(trans, delete)

    return translate


if __name__ == '__main__':
    digitsOnly = translator(keep=string.digits)
    print 'digitsOnly=', digitsOnly
    print 'digits=', digitsOnly('good1234hello')
    noDigits = translator(delete=string.digits)
    print 'noDigits=', noDigits('good1234hello')
    keepOne = translator(keep='1')
    print 'keepOne=', keepOne('good23145111')
allchar=  	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������
digitsOnly= 
digits= 1234
noDigits= goodhello
allchar=  	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������
keepOne= 1111


Process finished with exit code 0

你可能感兴趣的:(Python)