You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则字符串处理:移除标点及关联空格并合并相邻字符

问题解决:精准处理文本符号并合并字符

问题分析

你的核心需求是:

  • 仅移除英文逗号(,)、句号(.)本身,以及这两个符号后面紧跟的连续空格
  • 对于其他非字母数字符号(比如/),直接移除并让符号前后的字符自动合并
  • 原方法用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 14:15:41