【发布时间】:2022-06-28 14:42:29
【问题描述】:
我想将我拥有的字符串按与其他字符不同的字符拆分为一个列表。例如,如果我有字符串ccaaawq,我希望我的程序给我['cc', 'aaa', 'w', 'q']。由于每个拆分之间没有单一的区别,我想知道解决这个问题的最佳方法是什么。
提前感谢您的回答
【问题讨论】:
我想将我拥有的字符串按与其他字符不同的字符拆分为一个列表。例如,如果我有字符串ccaaawq,我希望我的程序给我['cc', 'aaa', 'w', 'q']。由于每个拆分之间没有单一的区别,我想知道解决这个问题的最佳方法是什么。
提前感谢您的回答
【问题讨论】:
你可以使用itertools.groupby:
from itertools import groupby
s = "ccaaawq"
out = ["".join(g) for _, g in groupby(s)]
print(out)
打印:
['cc', 'aaa', 'w', 'q']
【讨论】:
这是一个正则表达式查找所有方法:
inp = "ccaaawq"
output = [x[0] for x in re.findall(r'((.)\2*)', inp)]
print(output) # ['cc', 'aaa', 'w', 'q']
上述方法通过匹配任何一个字符后跟同一个字符零次或多次来工作。然后将这些匹配存储在我们从二维列表输出中提取的第一个捕获组中。
【讨论】: