Recipe 1.9. Simplifying Usage of Strings' translate Method(Python Cookbook)
1 >>> import string
2 >>> def translator(frm='', to='', delete='', keep=None):
3 if len(to) == 1:
4 to = to * len(frm)
5 trans = string.maketrans(frm, to)
6 if keep is not None:
7 allchars = string.maketrans('', '')
8 delete = allchars.translate(allchars, keep.translate(allchars, delete))
9 def translate(s):
10 return s.translate(trans, delete)
11 return translate
12
13 >>> digits_only = translator(keep=string.digits)
14 >>> digits_only('Ray Zhang : 4654- 645646')
15 '4654645646'
16 >>> no_digits = translator(delete=string.digits)
17 >>> no_digits('Ray Zhang : 4654- 645646')
18 'Ray Zhang : - '
19 >>> digits_to_hash = translator(frm=string.digits, to='#')
20 >>> digits_to_hash('Ray Zhang : 4654- 645646')
21 'Ray Zhang : ####- ######'
2 >>> def translator(frm='', to='', delete='', keep=None):
3 if len(to) == 1:
4 to = to * len(frm)
5 trans = string.maketrans(frm, to)
6 if keep is not None:
7 allchars = string.maketrans('', '')
8 delete = allchars.translate(allchars, keep.translate(allchars, delete))
9 def translate(s):
10 return s.translate(trans, delete)
11 return translate
12
13 >>> digits_only = translator(keep=string.digits)
14 >>> digits_only('Ray Zhang : 4654- 645646')
15 '4654645646'
16 >>> no_digits = translator(delete=string.digits)
17 >>> no_digits('Ray Zhang : 4654- 645646')
18 'Ray Zhang : - '
19 >>> digits_to_hash = translator(frm=string.digits, to='#')
20 >>> digits_to_hash('Ray Zhang : 4654- 645646')
21 'Ray Zhang : ####- ######'