Python 中 maketrans 与 translate 的用法
maketrans 和 translate 函数是进行字符串字符编码的常用方法。首先看下两个函数的签名和用法实例
maketrans
string.maketrans(from, to)
translate
string.translate(s, table[, deletechars])
str.translate(table[, deletechars])
unicode.translate(table)
实例
import string
map = string.maketrans('123', 'abc')
s = "123345"
string.translate(s,map)
#'abcc45'
s.translate(string.maketrans('123', 'aaa'), '5')
#'aaaa4'
s.translate(map)
#'abcc45'
s.translate(string.maketrans('123', 'aaa'))
#'aaaa45'
在《Python CookBook》中有如下代码
import string
def translator(from='', to='', delete='', keep=None):
if len(to) == 1:
to = to * len(from)
trans = string.maketrans(from, 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
这是作者把使用字符串的 translate 方法的需求写成的一个工厂闭包的形式,这样可以简单的创建并且使用它。
实例
digites_only = translator(keep=string.digits)
digites_only("Chris Perkins : 223-2346")
#'2232346'
digits_to_hash = translator(delete=string.digits)
digites_only("Chris Perkins : 223-2346")
#'Chris Perkins : -'
digits_to_hash = translator(from=string.digits, to='#')
digites_only("Chris Perkins : 223-2346")
#'Chris Perkins : ###-####'