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= <span style="white-space:pre"> </span>
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������
digitsOnly= <function translate at 0x0000000002CAAEB8>
digits= 1234
noDigits= goodhello
allchar= <span style="white-space:pre"> </span>
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������
keepOne= 1111
Process finished with exit code 0