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