我想把一个由1和0组成的字符串拆分成一个由这些字符组成的重复组的列表。示例:m = ['0000', '11', '000', '11111', '000']转至:m = ['0000', '11', '000', '11111', '000']个我该如何在高效简洁的代码中做到这一点呢?正则表达式是否适用于此?
m = ['0000', '11', '000', '11111', '000']
mu0hgdu01#
是的,您可以使用re。例如:
re
import re m = "00001100011111000" print(["".join(v) for v, _ in re.findall(r"((.)\2*)", m)])
印刷品:
['0000', '11', '000', '11111', '000']
其他正则表达式:
print(re.findall(r"0+|1+", m))
flmtquvp2#
您可以使用itertools groupby
from itertools import groupby m = '00001100011111000' ["".join(g) for _, g in groupby(m)]
uplii1fm3#
使用itertools.groupby的另一种方法:
itertools.groupby
from itertools import groupby ["".join(g) for k, g in groupby(m)]
ftf50wuq4#
您可以使用re.finditer():
m = "00001100011111000" [s.group(0) for s in re.finditer(r"(\d)\1*", m)]
输出量:
4条答案
按热度按时间mu0hgdu01#
是的,您可以使用
re
。例如:印刷品:
其他正则表达式:
印刷品:
flmtquvp2#
您可以使用itertools groupby
uplii1fm3#
使用
itertools.groupby
的另一种方法:ftf50wuq4#
您可以使用re.finditer():
输出量: