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

标签 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 的方式来做到这一点?

最佳答案

这就是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']

关于python - 如何在 python ( 'aabcdd' -> ['aa' , 'b' , 'c' , 'dd' ] ) 中对相同字符的句子进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465519/

相关文章:

python - 配置 nginx 和 uwsgi 时出现 'No such file or directory' 错误

python - Django:截断日期时间没有结果

python - 安装 OSQP 包时遇到问题

python - Python3.3.5如何在字符串中添加数字和字母(最终结果应该是int)?

Python FFMPEG AttributeError : 'Popen' object has no attribute 'proc'

python - PEP8 - E129 和 E127/E128 之间的矛盾

c# - 如何在单元测试中验证序列化的 JSON 在 Python/C# 中是否正确?

python - 用 return 或缩进关闭函数是更 pythonic 吗?

python - beautifulsoup 在嵌套类中展开表

python - 如何使用 python2.7 使用嵌套 for 循环迭代数据帧并附加到新的数据帧列?