Skip to main content
 首页 » 编程设计

python之将二进制字符串分解为多个段

2025年05月04日19think

这里的任务是将一个字符串110011110110000分解成一个列表:

['11', '00', '1111', '0', '11', '0000'] 

我的解决方案是

str1='110011110110000' 
seg = [] 
a0=str1[0] 
seg0='' 
for a in str1: 
    print('a=',a) 
    if a==a0: 
        seg0=seg0+a 
    else: 
        print('seg0=',seg0) 
        seg.append(seg0) 
        seg0=a 
        a0=a 
seg.append(seg0) 
seg 

这很丑陋,我相信你们那里的人有一个单线的。也许正则表达式?

请您参考如下方法:

您可以使用 itertools.groupby ( doc ):

str1='110011110110000' 
 
from itertools import groupby 
 
l = [v * len([*g]) for v, g in groupby(str1)] 
 
print(l) 

打印:

['11', '00', '1111', '0', '11', '0000'] 

编辑:带正则表达式的版本:

str1='110011110110000' 
import re 
print([g[0] for g in re.findall(r'((\d)\2*)', str1)])