在Python中字符更改时拆分

Ang*_*ash 0 python string parsing

所以我有这个字符串.

6#666#665533999
Run Code Online (Sandbox Code Playgroud)

我想把它解析成多个小字符串(或直到字符改变)并忽略它,#以便我可以6 = M or 666 = O or 9 = W像电话的拨号盘一样替换它.

6#666#665533999 -> 6, 666, 66, 55, 33, 999
Run Code Online (Sandbox Code Playgroud)

所以我用这个split('#')方法删除了#,并且无法弄清楚接下来要做什么.我尝试过一些蛮力方法,它在一定程度上解决了这个问题但是有没有更容易或更优雅的解决方案呢?

msv*_*kon 6

用途itertools.groupby:

>>> c = "6#666#665533999"
>>> ["".join(g) for k, g in groupby(c) if k != '#']
['6', '666', '66', '55', '33', '999']
Run Code Online (Sandbox Code Playgroud)

然后有一个字典,将每个集合映射到拨号盘中的字符.

cmap = {'77': 'Q', '9999': 'Z'} # And so forth..
Run Code Online (Sandbox Code Playgroud)