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

Python中如何将字符串按连续相同字符块分割为列表

相邻同字符字符串分割实现方案

你的需求本质是对字符串中连续相同的字符做分组,不需要依赖固定分隔符,以下是两种经过验证的成熟实现,优先推荐标准库方案:

方案1:使用itertools.groupby(生产环境首选)

Python标准库的itertools.groupby原生设计就是用来处理相邻等值元素分组场景,完全匹配需求,代码最简洁,且底层为C实现,执行效率远高于纯Python手写循环:

import itertools

s = "ccaaawq"
result = [''.join(group) for _, group in itertools.groupby(s)]
print(result)  # 输出:['cc', 'aaa', 'w', 'q']

注意:使用时不要提前对字符串排序。groupby默认仅聚合相邻的等值元素,刚好符合按相邻边界分割的要求,排序会打乱原字符顺序,返回错误结果。

方案2:手动遍历实现

如果需要自定义分组规则(比如忽略大小写、指定特殊字符归为同组等),可以直接遍历字符串手动判断字符边界,逻辑直观可控:

def split_by_adjacent_diff(s: str) -> list[str]:
    # 处理空字符串边界情况
    if not s:
        return []
    res = []
    current_segment = [s[0]]
    for c in s[1:]:
        if c == current_segment[0]:
            current_segment.append(c)
        else:
            res.append(''.join(current_segment))
            current_segment = [c]
    # 追加遍历结束后剩余的最后一段
    res.append(''.join(current_segment))
    return res

# 功能测试
print(split_by_adjacent_diff("ccaaawq"))  # 输出:['cc', 'aaa', 'w', 'q']

选型建议

  • 无特殊定制需求时优先选itertools.groupby,不需要手动编写边界判断逻辑,代码可读性高、出错概率低,性能最优
  • 存在自定义分组逻辑需求时,选手动遍历方案,只需修改字符相等的判断条件即可适配各种衍生需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:27:17