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

Python中如何将字符串内连续重复的指定字符替换为单个该字符

连续重复指定字符替换为单个字符的实现方案

方案1:正则表达式实现(最简洁)

正则表达式可以直接匹配任意长度的连续重复目标字符,无需提前枚举所有重复长度的规则,仅需一行核心代码即可完成需求。
以你给出的分号去重需求为例,Python实现代码如下:

import re

original_str = '1;AA;;1234567;;some text;;some text;;;some text;some text;;;;;;1, 2, 3, 4, 5, 6;;;;;;;;;;;another text;;;;;;;;;;;;;'
# 匹配所有连续1次及以上的分号,统一替换为单个分号
result = re.sub(r';+', ';', original_str)
print(result)

输出结果和你需要的目标格式完全一致。
如果需要同时处理多种字符的连续重复(比如同时处理分号、逗号的重复),可以修改正则规则复用逻辑:

# 同时将连续的分号、逗号替换为单个对应字符
result = re.sub(r'([;,])\1+', r'\1', original_str)

其中([;,])是分组匹配分号或逗号,\1+匹配和分组内容一致的连续重复内容,替换时用\1引用分组匹配到的单个字符即可。

方案2:遍历实现(无需引入正则库)

如果你不想引入正则库,也可以通过遍历字符串的方式实现,性能稳定,适合处理超长长字符串场景:

def dedup_target_char(input_str: str, target_char: str) -> str:
    result = []
    last_char = None
    for char in input_str:
        # 当前字符是目标字符且和上一个保留的字符相同就跳过
        if char == target_char and char == last_char:
            continue
        result.append(char)
        last_char = char
    return ''.join(result)

# 调用示例
result = dedup_target_char(original_str, ';')

内容的提问来源于stack exchange,提问作者Goosuto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03