Заменить серию одного и того же символа на количество его вхождений в серию.Python

Программы на Python
Anonymous
Заменить серию одного и того же символа на количество его вхождений в серию.

Сообщение Anonymous »

Я получаю такую ​​строку:

Код: Выделить всё

AABBBB$CCCDEEE$AABADEE
И мне нужен такой результат:

Код: Выделить всё

2A4B$3CD3E$2ABAD2E
Для этого я создал цикл for для массива строк.
Это работает хорошо:

Код: Выделить всё

import re

string = "AABBBB$CCCDEEE$AABADEE"
out_string = string[:]
k = 1
c_old = ""
for c in string:
if c_old==c :
k += 1
else:
if k>1:
s= ""
for i in range(k):
s += c_old
chg = str(k) + c_old
out_string = re.sub(s, chg, out_string, 1)
k = 1
c_old = c

print(out_string)
Но с очень длинными строками это может занять много времени.
Есть ли способ сделать то, что я хочу, не перебирая всю строку, особенно с модулем re?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -the-serie

Вернуться в «Python»