"""替换"""
"""
在字符串中替换子串时,使用模块re并通过正则表达式指定被替换的子串可以实现更加强大的替换功能。模块re提供了两个实现字符串替换的方法
一、sub()
二、subn()
"""
import re
"""
一、sub()
sub(pattern, repl, string, count=0, flags=0):
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。当repl为空字符串时替换就变成删除
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
flags :一个可选标志,用于控制正则表达式匹配方式
"""
print(re.sub(r'd+', 'zzg', 'a-123-b-456-c-789-d')) # a-zzg-b-zzg-c-zzg-d
print(re.sub(r'd+', 'zzg', 'a-123-b-456-c-789-d', 2)) # a-zzg-b-zzg-c-789-d
# 当repl为一个函数时举例
def add(match):
val = match.group()
num = int(val) + 1
return str(num)
# 以下运行通过函数替换其结果为:a-124-b-457-c-790-d
print(re.sub(r'd+', add, 'a-123-b-456-c-789-d'))
# 当repl为空字符串时替换就变成删除
print(re.sub(r'[aeiou]', '', 'Apple', flags=re.I)) # ppl
"""
二、subn()
返回值是包含两个元素的元组:(sub()的返回值,替换次数)
"""
# ('a-124-b-457-c-790-d', 3)
print(re.subn(r'd+', add, 'a-123-b-456-c-789-d'))