python - Python 中字符更改时拆分

标签 python string parsing

所以我有这个字符串。

6#666#665533999

我想将其解析为多个小字符串(或直到字符更改)并忽略 #这样我就可以替换 6 = M or 666 = O or 9 = W就像手机的拨号盘一样。
6#666#665533999 -> 6, 666, 66, 55, 33, 999

所以我使用了 split('#')删除 # 的方法并且不知道接下来要做什么。我尝试过蛮力方法,可以在一定程度上解决它,但是有没有更简单或更优雅的解决方案?

最佳答案

使用 itertools.groupby :

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

然后有一个字典,将这些集合中的每一个映射到拨号盘中的一个字符。
cmap = {'77': 'Q', '9999': 'Z'} # And so forth..

关于python - Python 中字符更改时拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255222/

相关文章:

python - 我该如何让我的 Python 评分系统发挥作用?

Python 范围问题

ios - 返回字符串中第一个和最后一个字符的范围

python - 比较 2 个 Python 列表的顺序

objective-c - 是否有现成的字符串形式数学表达式解析器?

python - Microsoft Azure 文本转语音如何无需说话直接保存文件?

c++ - 如何在 C++ 中的字符串之间使用 cin?

.net - 在 C# 中将整数转换为月份名称的最佳方法?

c# - 解析混合值枚举(char和int)

python - 如何在 PyMC3 中定义自定义先验