替换字符串并计算连珠次数

2024-05-08 00:25:01 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个如下形式的字符串:

"000000111100011100001011000000001111"

我想创建一个包含1-条纹长度的列表:

^{pr2}$

有一个很好的一行吗?


Tags: 字符串列表形式条纹pr2
3条回答

可以用regex来完成,尽管没有itertools解决方案那么优雅

answer = [len(item) for item in filter(None, re.split(r"[^1]+", test_string))]

或者,更优雅:

^{pr2}$

更优雅(乔恩的功劳):

answer = map(len, re.findall("1+", test_string))
>>> mystr = "000000111100011100001011000000001111"
>>> [len(s) for s in re.split("0+", mystr) if s]
[4, 3, 1, 2, 4]

如果你不介意from itertools import groupby。。。在

>>> from itertools import groupby
>>> [len(list(g)) for k, g in groupby(s) if k == '1']
[4, 3, 1, 2, 4]

相关问题 更多 >