Python 中 maketrans 与 translate 的

2014-11-22  本文已影响1770人  NearTan

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 : ###-####'
上一篇 下一篇

猜你喜欢

热点阅读