如果两个连续字符不相同则拆分

时间:2014-08-28 17:43:59

标签: python-2.7 split

我有一个输入字符串,如

a = '4433555555666666'

如果最后一个字符与下一个字符不相同,我希望将值分开。

在这种情况下:

44, 33, 555555, 666666

我是python的新手,所以不知道如何处理它。我试过但它只是给第一个正确的,即

['44', '', '555555666666']

此外,如果两个连续的字符组相同。 即         a =' chchdfch' 然后' ch'应该换成         a =' ** df *'

1 个答案:

答案 0 :(得分:3)

您可以使用itertools.groupby()

[''.join(v) for k, v in itertools.groupby(a)]

演示:

>>> import itertools
>>> a = '4433555555666666'
>>> [''.join(value) for key, value in itertools.groupby(a)]
['44', '33', '555555', '666666']

因此,此代码称为list comprehension - 一种单独迭代元素的紧凑方式。

另一种表达方式是:

>>> for k, v in itertools.groupby(a):
...   print k, v
... 
4 <itertools._grouper object at 0x100b90710>
3 <itertools._grouper object at 0x100b90750>
5 <itertools._grouper object at 0x100b90710>
6 <itertools._grouper object at 0x100b90750>
>>> for k, v in itertools.groupby(a):
...   print k, "".join(v) 
... 
4 44
3 33
5 555555
6 666666
>>> 

只需忽略迭代器生成的k