【问题标题】:How to separate a string of repeating characters? [duplicate]如何分隔一串重复的字符? [复制]
【发布时间】:2017-07-20 20:23:25
【问题描述】:

所有连续的字符组必须组合在一起并放入一个列表中。例如,如果我有这个字符串:

1112221121

我想把它分成一个列表:

['111', '222', '11', '2', '1']`

另一个例子是

0011100000

输出:['00', '111', '00000']

这是我想出的:

In [146]: t = '0011100000'
     ...: out = [] 
     ...: prev = None
     ...: for c in t:
     ...:     if c != prev:
     ...:         prev = c
     ...:         out.append('')
     ...:     out[-1] += c
     ...:     

In [147]: out
Out[147]: ['00', '111', '00000']

有没有更简单的解决方案?我想我想多了。

【问题讨论】:

    标签: python


    【解决方案1】:

    itertools.groupby 就是这样做的:

    >>> from itertools import groupby
    >>> [''.join(g) for _, g in groupby('1112221121')]
    ['111', '222', '11', '2', '1']
    

    【讨论】:

    • 根据您的说法,这是不是骗局中正则表达式的更简单替代方案?我不知道该用什么。
    • groupby 可能比正则表达式更快,是的。
    • 很公平。谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多