Python 如何将0和1分开?

Python 如何将0和1分开?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,你好,我有这样的号码: a = "00001" b = "00011" c = "00111" d = "01001" e = "10001" a = "00001" => "0000", "1" b = "00011" => "000", "11" c = "00111" => "00", "111" d = "01001" => "0", "1", "00", "1" e = "10001" => "1", "000", "1" 我想要这样的东西: a

你好,我有这样的号码:

a = "00001"
b = "00011" 
c = "00111"  
d = "01001"
e = "10001"
a = "00001" => "0000", "1"
b = "00011" => "000", "11"
c = "00111" => "00", "111"
d = "01001" => "0", "1", "00", "1"
e = "10001" => "1", "000", "1"
我想要这样的东西:

a = "00001"
b = "00011" 
c = "00111"  
d = "01001"
e = "10001"
a = "00001" => "0000", "1"
b = "00011" => "000", "11"
c = "00111" => "00", "111"
d = "01001" => "0", "1", "00", "1"
e = "10001" => "1", "000", "1"
我怎样才能拆分这个号码


多谢各位

将字符串划分为所需的子列表

def encode(s):
  result, prev = [], ''

  for v in s:
    if not prev or prev[-1] == v:
      # continue current pattern
      prev += v
    else:
      # pattern change
      result.append(prev)
      prev = v

  if prev:
    result.append(prev)
  return result

a = "00001"
b = "00011" 
c = "00111"  
d = "01001"
e = "10001"

for s in [a, b, c, d, e]:
  print(s, encode(s))
输出

00001 ['0000', '1']
00011 ['000', '11']
00111 ['00', '111']
01001 ['0', '1', '00', '1']
10001 ['1', '000', '1']

Python的一个优点是有很多方法可以完成相同的任务。下面是另一个使用regex的方法

我扩展了您的示例,以显示它仅适用于0或1

import re

a = "00001"
b = "00011" 
c = "00111"  
d = "01001"
e = "10001"
f = "52255"
g = "90099"
h = "81811"

def parse(s):
    """Parse binary string into like groups."""
    f = re.findall('([0]+)|([1]+)', s)
    return [z if z else o for z, o in f]

for i in [a, b, c, d, e, f, g, h]:
    print(i, parse(i))
输出:
groupby
就是为此而设计的

导入itertools
def groupthem(二进制):
“”“将二进制1和0分别分组。
>>>groupthem(“00001”)
["0000", "1"]
>>>分组他们(“00011”)
["000", "11"]
>>>分组他们(“01001”)
["0", "1", "00", "1"]
"""
groups=itertools.groupby(二进制)
return[“”.加入(组)for u,分组]
检查答案可能重复,它可以根据您的问题进行调整