sub函数与subn函数用于实现搜索和替换功能。这两个函数的功能几乎完全相同,都是将某个字符串中所有匹配正则表达式的部分替换成其他字符串。用来替换的部分可能是一个字符串,也可以是一个函数,该函数返回一个用来替换的字符串。sub函数返回替换后的结果,subn函数返回一个元组,元组的第1个元素是替换后的结果,第2个元素是替换的总数。
替换的字符串可以是普通的字符串,也可以是通过"\N"形式取出替换字符串中的分组信息,其中N是分组编号,从1开始。sub函数和subn函数的详细用法如下。
[例 11.10] 本例演示了sub函数和subn函数的用法,可以通过本例的代码对这两个函数进行对比。
import re
result = re.sub('Bill','Mike','Bill is my son')
print(result)
result = re.subn('Bill','Mike','Bill is my son,I like Bill')
print(result)
print(result[0])
print('替换总数','=',result[1])
result = re.sub('([0-9])([a-z]+)',r'产品编号:(\1-\2)','01-1abc,02-2xyz,03-9hgf')
print(result)
def fun():
return r'产品编号(\1-\2)'
result = re.subn('([0-9])([a-z]+)',fun(),'01-1abc,02-2xyz,03-9hgf')
print(result)
print(result[0])
print('替换总数:','=',result[1])
输出结果:
Mike is my son
('Mike is my son,I like Mike', 2)
Mike is my son,I like Mike
替换总数 = 2
01-产品编号:(1-abc),02-产品编号:(2-xyz),03-产品编号:(9-hgf)
('01-产品编号(1-abc),02-产品编号(2-xyz),03-产品编号(9-hgf)', 3)
01-产品编号(1-abc),02-产品编号(2-xyz),03-产品编号(9-hgf)
替换总数: = 3