Python正则表达式中替换sub()和subn()总结
python的re库有两个函数/方法用于实现搜索和替换功能:sub()和subn()。两者几乎一样,都是将某字符串中所有匹配正则表达式的部分进行某种形式的替换。用来替换的部分通常是一个字符串,但它也可能是一个函数,该函数返回一个用来替换的字符串。subn()和sub()一样,但subn()还返回一个表示替换的总数,替换后的字符串和表示替换总数的数字一起作为一个拥有两个元素的元组返回。
话不多说,直接上代码:首先是sub()
importre
s=’attn:XDearX,’
s1=re.sub(‘X’,’Mr.Smith’,s)
print(s1)
print(“*”*10)
print(s)
输出结果为:
attn:Mr.Smith
DearMr.Smith,
**********
attn:X
DearX,
由此可知,sub()方法实现了字符串的替换,并返回了一个新的对象。由输出结果可以看出来,sub()方法并不会改变原本的字符串s。
下面是subn()和sub()的对比代码部分:
importre
s=’attn:XDearX,’
s1=re.sub(‘X’,’Mr.Smith’,s)
s2=re.subn(‘X’,’Mr.Smith’,s)
print(s1)
print(“*”*10)
print(s)
print(“*”*10)
print(s2)
print(“*”*10)
print(s2[0])
print(“*”*10)
print(s2[1])
print(“*”*10)
输出结果为:
attn:Mr.Smith
DearMr.Smith,
**********
attn:X
DearX,
**********
(‘attn:Mr.SmithDearMr.Smith,’,2)
**********
attn:Mr.Smith
DearMr.Smith,
**********
2
**********
比较可知,subn()返回的一个二元元组,元组的第0个元素和sub()返回值相同,元组的第1个元素返回值为替换的数目。