Chinaunix首页 | 论坛 | 博客
  • 博客访问: 591106
  • 博文数量: 226
  • 博客积分: 10080
  • 博客等级: 上将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-26 11:15
文章分类

全部博文(226)

文章存档

2011年(5)

2010年(64)

2009年(99)

2008年(37)

2007年(21)

我的朋友

分类: LINUX

2010-04-21 20:44:30

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 : ###-####

作者:CoderZhCoderZh的技术博客 - 博客园
出处:http://coderzh.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

阅读(1316) | 评论(0) | 转发(0) |
0

上一篇:有趣的python challenge第二题

下一篇:第三题

给主人留下些什么吧!~~