Как считать последовательные символы?

#python-3.x

#python-3.x

Вопрос:

Нужно найти количество каждого последовательного символа в строке. Пример: aaaabbbccaa вывод: a4b2B2c2a2

Символ может повторяться, но нужно считать только последовательные. Мне также нужно сохранить исходную последовательность. Я пытался сделать это с помощью кода ниже, но это не работает.

 l = input()
counter = dict()
if l.isalpha() == True:
   for letter in l:
      if letter in counter:
         counter[letter]  = 1
      else:
         counter[letter] = 1
   for this_one in list(counter.keys()):
      print(this_one,counter[this_one],sep ="",end="")
  

Комментарии:

1. itertools.groupby

Ответ №1:

Решение, если вас интересует while механика цикла :

 l = 'aaaabbBBccaazzZZZzzzertTTyyzaaaAA'
output = ''

index = 0
while index < len(l):
    incr = index
    count = 1
    output  = l[incr]
    while incr < len(l)-1 and l[incr]==l[incr 1]:
        count  = 1
        incr  = 1
        index  = 1
    output  = str(count)
    index  = 1

print(output)
  

Ответ №2:

itertools.groupby позволяет выразить это довольно кратко, используя выражение генератора.

 from itertools import groupby

''.join(f'{x}{len(list(y))}' for x, y in groupby('aaaabbBBccaa'))
# outputs:
'a4b2B2c2a2'