Python中如何移除字符串连续重复的特殊字符(仅保留单个)
解决Pandas中移除连续重复连字符(保留单个)的问题
需要处理字符串,将连续出现的连字符-替换为单个,同时完全保留字母和数字内容,对应输入输出示例如下:
| 原始数据 | 期望输出 |
|---|---|
| CL-LIN-VM--OE382F | CL-LIN-VM-OE382F |
| CYaIX-PHY--aG617A | CYaIX-PHY-aG617A |
| FRWIN-VM--FO025B | FRWIN-VM-FO025B |
| PYWIN-VM--IK043D | PYWIN-VM-IK043D |
| MQAIX--PhQA622F | MQAIX-PhQA622F |
你之前的代码问题在于,正则[^a-zA-Z0-9 -]会匹配所有非字母、数字、空格、连字符的字符并替换为-,这和需求不符。
正确实现代码
直接匹配连续的连字符并替换为单个即可:
# 非原地修改,生成新列或覆盖原列 Single_Column['Workload_2'] = Single_Column['Workload_2'].str.replace(r'-+', '-', regex=True) # 原地修改版本 Single_Column['Workload_2'].str.replace(r'-+', '-', regex=True, inplace=True)
代码说明
- 正则
-+表示匹配一个及以上连续的连字符 str.replace方法会精准替换所有连续重复的连字符为单个,不会改动字母和数字,完全符合需求。
内容的提问来源于stack exchange,提问作者beginner_Coder
相关产品推荐
相关产品推荐

