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

Python天天美味(9) - translatorallchars = string.maketrans('''')#所有的字符串,即不替换字符串
  
aTob = string.maketrans('a','b')#将字符a转换为字符b

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

Python天天美味(9) - translatoraTob = string.maketrans('e','a')
Python天天美味(9) - translator
= 'hello python'
Python天天美味(9) - translator
print s.translate(aTob, 'o')

输出结果:
hall pythn

3.假如我们这样使用

Python天天美味(9) - translatorallchars = string.maketrans('''')
Python天天美味(9) - translator
= allchars.translate(allchars, 'a')
allchars表示所有的字符串,而k表示从所有的字符串中去除掉字符a,就是说所有的字符,除了a,因此,我们再调用如下方法时:
Python天天美味(9) - translator= 'abc'
Python天天美味(9) - translator
print s.translate(allchars, k)
字面意思是,输出“字符串s中除去任何不是字符a的字符",即,只输出字符a,因此输出结果为:
a

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

Python天天美味(9) - translatorimport string
Python天天美味(9) - translator
def translator(frm='', to='', delete='', keep=None):
Python天天美味(9) - translator    
if len(to) == 1:
Python天天美味(9) - translator        to 
= to * len(frm)
Python天天美味(9) - translator    trans 
= string.maketrans(frm, to)
Python天天美味(9) - translator    
if keep is not None:
Python天天美味(9) - translator        allchars 
= string.maketrans('''')
Python天天美味(9) - translator        delete 
= allchars.translate(allchars, keep.translate(allchars, delete))
Python天天美味(9) - translator    
def translate(s):
Python天天美味(9) - translator        
return s.translate(trans, delete)
Python天天美味(9) - translator    
return translate
调用:
Python天天美味(9) - translatordigits_only = translator(keep=string.digits)
Python天天美味(9) - translator
print digits_only('Chris Perkins : 224-7992')
Python天天美味(9) - translator
Python天天美味(9) - translatordigits_to_hash 
= translator(frm=string.digits, to='#')
Python天天美味(9) - translator
print digits_to_hash('Chris Perkins : 224-7992')
输出结果:
2247992
Chris Perkins : ###-####

Python 天天美味系列(总)

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

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

Python 天天美味(9) - translator  

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

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

...

相关文章:

  • 2021-12-27
  • 2021-06-13
  • 2021-10-07
  • 2021-05-28
  • 2021-12-13
  • 2021-06-25
  • 2021-12-15
猜你喜欢
  • 2022-01-28
  • 2021-08-11
  • 2021-10-11
  • 2021-08-15
  • 2022-01-15
  • 2021-08-03
相关资源
相似解决方案