Python天天美味(9) - translator

1.string.maketrans设置字符串转换规则表(translation table)

allchars = string.maketrans('''')#所有的字符串,即不替换字符串    aTob = string.maketrans('a','b')#将字符a转换为字符b

2.translate函数进行字符串的替换和删除,第一个参数是字符串转换规则表(translation table),第二个参数是要删除的字符串。比如,要将字符串s中的所有e替换为a,同时要删除所有的o

aTob = string.maketrans('e','a') s = 'hello python' print s.translate(aTob, 'o')

输出结果:

hall pythn

3.假如我们这样使用

allchars = string.maketrans()

= allchars.translate(allchars, a)

allchars表示所有的字符串,而k表示从所有的字符串中去除掉字符a,就是说所有的字符,除了a,因此,我们再调用如下方法时:

= abc

print s.translate(allchars, k)

字面意思是,输出“字符串s中除去任何不是字符a的字符”,即,只输出字符a,因此输出结果为:

a

4.现在,已经不难理解下面这个函数了

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))

    def translate(s):

        return s.translate(trans, delete)

    return translate

调用:

digits_only = translator(keep=string.digits)

print digits_only(Chris Perkins : 224-7992)

digits_to_hash = translator(frm=string.digits, to=#)

print digits_to_hash(Chris Perkins : 224-7992)

输出结果:

2247992

Chris Perkins : ###-####

Python 天天美味系列(总)

Python 天天美味(7) - 连接字符串(join %)  

Python 天天美味(8) - 字符串中的字符倒转

Python 天天美味(9) - translator  

Python 天天美味(10) - 除法小技巧  

Python 天天美味(11) - 可爱的大小写

[温馨提示]:该文章由原博客园导入而来,如排版效果不佳,请移步:http://www.cnblogs.com/coderzh/archive/2008/05/03/1180705.html

微信扫一扫交流

作者:CoderZh
微信关注:hacker-thinking (一个程序员的思考)
本文出处:https://blog.coderzh.com/2008/05/03/1180705/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。