Python中的sub
函数是正则表达式模块re
中的一个强大工具,用于在字符串中查找匹配的模式并替换为指定的内容。其核心功能包括灵活的正则匹配和高效的字符串替换,常用于文本处理、数据清洗等场景。
1. 基本用法
sub
函数的语法如下:
re.sub(pattern, repl, string, count=0, flags=0)
- pattern:匹配模式,可以是字符串或正则表达式。
- repl:替换内容,可以是字符串或函数。
- string:待处理的原始字符串。
- count(可选):最大替换次数,默认为0(即替换所有匹配项)。
- flags(可选):正则表达式的标志位。
例如,将字符串中的所有数字替换为#
:
import re
result = re.sub(r'\d', '#', 'abc123def456')
print(result) # 输出:abc###def###
2. 替换为函数
sub
函数支持将repl
参数设置为函数,这种用法适用于更复杂的替换逻辑。函数接受一个匹配对象(match object
)作为参数,并返回替换后的字符串。
例如,将字符串中的所有单词首字母大写:
def capitalize(match_obj):
return match_obj.group(0).capitalize()
result = re.sub(r'\b\w+\b', capitalize, 'hello world')
print(result) # 输出:Hello World
3. 高级特性
- 空匹配:当
pattern
为空时,sub
函数会替换整个字符串。 - 全局替换:默认情况下,
sub
会替换所有匹配项,但可以通过count
参数限制替换次数。 - 标志位:使用
flags
参数可以启用正则表达式的特定功能,如re.IGNORECASE
(忽略大小写)。
4. 注意事项
- 确保正则表达式的模式正确,避免因模式错误导致替换失败。
- 在使用
repl
为函数时,确保函数返回值符合预期。 - 注意
count
参数的设置,避免因未限制替换次数导致性能问题。
5. 实际应用
- 数据清洗:删除字符串中的非汉字字符。
- 文本格式化:将下划线命名转换为驼峰命名。
- 内容提取:从复杂文本中提取特定信息。
通过灵活运用sub
函数,可以大幅提升文本处理的效率和灵活性。如果你有更复杂的替换需求,可以深入研究正则表达式的更多高级功能。