【python cookbook】简化字符串的translate 方法的使用
#!/usr/bin/python # -*- coding: utf-8 -*- #简化字符串的translate 方法的使用 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: allchars = string.maketrans('','') delete = allchars.translate(allchars,keep.translate(allchars,delete))
#keep.translate(allchars,delete) 表示去掉keep和deleted中共有的字符
def translate(s):
return s.translate(trans,delete)
return translate
测试
>>>digits_only = translator(keep=string.digits) >>>digits_only ('abcd,1234') >>> '1234'
keep=string.digits 表示只取keep中数字
translate()
S.translate(table [,deletechars]) -> string
Parameters:
Here is the detail of parameters:
-
table: You can use the maketrans() helper function in the string module to create a translation table.
-
deletechars: list of characters to be removed from the source string.
Return Value:
It returns a translated copy of the string.
简单来说就是对字符串S移除deletechars包含的字符,然后保留下来的字符按照table里面的字符映射关系映射(比如a变成A)。
无deletechars的例子
#!/usr/bin/python from string import maketrans # Required to call maketrans function. intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "this is string example....wow!!!"; print str.translate(trantab); th3s 3s str3ng 2x1mpl2....w4w!!!
有deletechars的例子
#!/usr/bin/python from string import maketrans # Required to call maketrans function. intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "this is string example....wow!!!"; print str.translate(trantab, 'xm'); #This will produce following result: th3s 3s str3ng 21pl2....w4w!!!
maketrans()
str.maketrans(intab, outtab]);
Parameters:
Here is the detail of parameters:
-
intab: string having actual characters.
-
outtab: string having corresponding mapping character.
Return Value:
It returns a translate table to be used translate() function.
Example:
#!/usr/bin/python from string import maketrans # Required to call maketrans function. intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "this is string example....wow!!!"; print str.translate(trantab);
th3s 3s str3ng 2x1mpl2....w4w!!!
allchars = string.maketrans('','') 表示所有字符 即使用时无需翻译
作者:GoodSpeed Cheng
出处:http://www.cnblogs.com/cacique/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。