【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('','')  表示所有字符  即使用时无需翻译

 

 

posted @ 2012-07-21 15:18  cacique  阅读(598)  评论(0编辑  收藏  举报
Copyright ©2011 Goodspeed Cheng