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 ' )
=   ' 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) - 可爱的大小写 

... 



本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/05/03/1180705.html,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值