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(
''
,
''
)
k
=
allchars.translate(allchars,
'
a
'
)
allchars表示所有的字符串,而k表示从所有的字符串中去除掉字符a,就是说所有的字符,除了a,因此,我们再调用如下方法时:
s
=
'
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
'
)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
digits_to_hash
=
translator(frm
=
string.digits, to
=
'
#
'
)
print
digits_to_hash(
'
Chris Perkins : 224-7992
'
)
输出结果:
2247992
Chris Perkins : ###-####