python cookbook学习笔记[一次完成多个字符串的替换]

import re
def multiple_replace(text,adict):
    rx=re.compile('|'.join(map(re.escape,adict)))
    def one_xlat(match):
        return adict[match.group(0)]
    return rx.sub(one_xlat,text)

print multiple_replace('abc123erts',{'a':'A','b':'B'})

基本原理是  我们把要替换的字符串作为某个字典的key,对应的要替换成的字符串作为它的value

用|号连接每个key,利用re模块的compile方法生成正则,然后调用sub(注意是调用rx的sub,而不是re模块)方法进行替换,这里给sub方法传入一个回调函数one_xlat,

每次匹配到替换的字符串时便调用该函数,返回字典里对应的值从而实现了一次完成多个字符串的替换!

posted @ 2011-08-09 10:19  淘小杰  阅读(1714)  评论(0编辑  收藏  举报