这听起来像是一个奇怪的问题,但这本质上就是我要问的。
s = 'aaabcdedddd'
在这个例子中,我想将字符串分割成这样的东西。
s = ['aa', 'a', 'b', c', 'd', 'e', 'dd', 'dd']
请注意“aaa”的三个字母重复并没有保持在一起,而是被视为双重复+单个字母(“aa”+“a”。末尾的“dddd”被视为双重复+双重复('dd' + 'dd')。
有什么办法可以有效地做到这一点吗?谢谢!
一种可能的解决方案是使用
re
模块:
import re
s = "aaabcdedddd"
print([m.group(0) for m in re.finditer(r"(.)(?:\1)?", s)])
打印:
['aa', 'a', 'b', 'c', 'd', 'e', 'dd', 'dd']