如何在python中对相同字符的句子进行分组('aabcdd' - > ['aa','b','c','dd'])?

时间:2013-03-17 20:01:27

标签: python

我有一个字符串'aabbababacccssdd',我想从中生成['aa', 'bb', 'a', 'b', 'a', 'b', 'a', 'ccc', 'ss', 'dd']

这是我目前的解决方案:

def get_pats(n):
    n = str(n) # to support integers
    a = len(n)
    p = []
    pat_start = 0
    prev = 0
    for b in range(0, a):
        if n[b] != n[prev]:
            p.append(n[pat_start:b])
            prev = b
            pat_start = b
    p.append(n[pat_start:b+1])
    return p

解决方案效果不错,但我想知道是否有更优雅/ pythonic的方法来做到这一点?

1 个答案:

答案 0 :(得分:12)

这是itertools.groupby为您所做的事情:

text = 'aabbababacccssdd'

from itertools import groupby
print [''.join(g) for k, g in groupby(text)]
# # ['aa', 'bb', 'a', 'b', 'a', 'b', 'a', 'ccc', 'ss', 'dd']