如何从带逗号的单个字符串中移除类似(x)的特定特殊字符模式?
问题原因
- 原有第一行正则
r'[^A-Za-z ]'会删除所有非字母、空格的字符,包括需要保留的逗号、斜杠等符号,不符合需求可直接删除。 - 原有第二行正则存在两处缺陷:
- 强制匹配括号前的空格,无法命中
Calm/Peaceful(5)这类括号前无空格的场景 .*为贪婪匹配规则,会从第一个左括号直接匹配到整段字符串的最后一个右括号,导致中间内容被错误删除
- 强制匹配括号前的空格,无法命中
解决方案
使用非贪婪匹配规则,同时兼容括号前有无空格的场景,完整代码如下:
df['col'] = df['col'].fillna('').astype(str).str.replace(r'\s*\(.*?\)', '', regex=True)
如果可确定括号内仅为数字,可使用更精准的正则避免误删其他合法带括号内容:
df['col'] = df['col'].fillna('').astype(str).str.replace(r'\s*\(\d+\)', '', regex=True)
效果验证
对示例输入Brash (7), Confident (7), Street-Smart (6), Calm/Peaceful(5)处理后,可直接得到目标输出Brash, Confident, Street-Smart, Calm/Peaceful。
内容的提问来源于stack exchange,提问作者PSCM
相关产品推荐
相关产品推荐

