我有一个输入字符串,如
a = '4433555555666666'
如果最后一个字符与下一个字符不相同,我希望将值分开。
在这种情况下:
44, 33, 555555, 666666
我是python的新手,所以不知道如何处理它。我试过但它只是给第一个正确的,即
['44', '', '555555666666']
此外,如果两个连续的字符组相同。 即 a =' chchdfch' 然后' ch'应该换成 a =' ** df *'
答案 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
。