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

如何用简洁高效的Python代码对01字符串按连续字符分组?正则可行吗?

分割0/1字符串为连续相同字符分组的Python实现方案

方法一:正则表达式(完全可行,简洁高效)

使用re.findall()配合匹配连续0或1的正则表达式,可快速提取所有连续相同字符的分组:

import re
input_str = '00001100011111000'
groups = re.findall(r'0+|1+', input_str)
print(groups)  # 输出: ['0000', '11', '000', '11111', '000']

正则说明:

  • 0+:匹配1个或多个连续的'0'
  • 1+:匹配1个或多个连续的'1'
  • |:逻辑或,匹配任意一种符合条件的子串
    findall()会自动遍历字符串,把所有符合条件的连续子串收集成列表,完全满足需求。

方法二:使用itertools.groupby(标准库方案,直观易读)

Python标准库的itertools.groupby专门用于连续相同元素的分组,适合不想用正则的场景:

from itertools import groupby
input_str = '00001100011111000'
groups = [''.join(group) for char, group in groupby(input_str)]
print(groups)  # 输出: ['0000', '11', '000', '11111', '000']

原理说明:
groupby()会遍历字符串,将连续相同的字符归为一组,返回每组的字符标识和对应的字符迭代器;用''.join()把迭代器转换为完整的连续字符子串,最终生成分组列表。

两种方案对比

  • 正则方案:代码更简洁,一行核心逻辑搞定,适合熟悉正则的开发者,处理0/1字符串效率极高。
  • groupby方案:无需正则知识,逻辑直观,依赖标准库,处理长字符串时性能稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:21:38