正则字符串处理:移除标点及关联空格并合并相邻字符
问题解决:精准处理文本符号并合并字符
问题分析
你的核心需求是:
- 仅移除英文逗号(,)、句号(.)本身,以及这两个符号后面紧跟的连续空格
- 对于其他非字母数字符号(比如
/),直接移除并让符号前后的字符自动合并 - 原方法用
re.sub(r'[^A-Za-z0-9 ]+', '', input_str)会保留空格,导致i/n. c变成in c,不符合预期
解决方案
可以通过两步正则替换(或一步复合正则)实现需求:
方法1:分步处理(更易理解)
import re input_str = 'strength and honor performance, i/n. c' # 第一步:移除逗号、句号及其后续所有连续空格 processed = re.sub(r'[.,]\s*', '', input_str) # 第二步:移除所有非字母数字的剩余符号(比如/),自动合并前后字符 result = re.sub(r'[^A-Za-z0-9 ]+', '', processed) print(result) # 输出:strength and honor performance inc
方法2:一步复合正则(更简洁)
import re input_str = 'strength and honor performance, i/n. c' # 匹配两种模式:1. 逗号/句号+后续空格;2. 其他非字母数字字符(不含空格) result = re.sub(r'[.,]\s*|[^A-Za-z0-9 ]', '', input_str) print(result) # 输出:strength and honor performance inc
原理说明
- 针对逗号和句号:用
[.,]\s*匹配符号本身及其后面的所有连续空格,替换为空,确保. c变成c - 针对其他非字母数字符号(如
/):用[^A-Za-z0-9 ]匹配并移除,这样i/n就会直接变成in - 两者结合后,
i/n. c就会依次处理为i/nc→inc,最终得到你想要的结果
内容的提问来源于stack exchange,提问作者data_matata
相关产品推荐
相关产品推荐

