如何用单条Regex语句实现标点字符两侧添加空格的映射功能?
用单条正则表达式简化标点加空格的操作
当然可以!你现在的代码多次调用re.sub确实有点繁琐,完全可以用一条正则表达式一次性完成所有标点的替换,让代码更简洁易读。
优化后的实现
import re def add_spaces_to_punctuation(input_text): return re.sub(r'([.,;:()])', r' \1 ', input_text)
原理说明
- 正则表达式
([.,;:()]):用字符类把你需要处理的所有标点(. , ; : ( ))包含进来,同时用括号创建一个捕获组,用来保存匹配到的具体标点字符。 - 替换字符串
r' \1 ':其中\1是对捕获组的反向引用,代表刚才匹配到的那个标点,这样就自动在它的前后各添加一个空格,一次替换就搞定所有目标标点。
额外优化:处理重复空格
如果你的输入文本里可能已经存在标点旁边有空格的情况,替换后会出现多个连续空格,你可以再增加一步把多个空格合并成单个空格,同时去掉首尾的空格:
import re def add_spaces_to_punctuation(input_text): # 给目标标点添加前后空格 text = re.sub(r'([.,;:()])', r' \1 ', input_text) # 合并连续空格并去除首尾空格 return re.sub(r'\s+', ' ', text).strip()
这样处理后,比如输入Hello, this is a (test) string.会被转换成Hello , this is a ( test ) string .,格式更规整。
内容的提问来源于stack exchange,提问作者Christian Doucette
相关产品推荐
相关产品推荐

