Схема решения:
- Разбить строку на список подстрок.Каждая подстрока определяется делением между цифрами и не цифрами.Ваш результат в конце этого этапа должен быть
["abc", "123", "abc", "456", "abc", "7891"]
- Просмотрите этот список;замените каждую строку цифр на обратную.
join
этот список в одну строку.
Последний шаг - просто ''.join(substring_list)
.
Средняяшаг содержится в том, что вы уже делаете.
Первый шаг не тривиален, но вполне соответствует способности кодирования в вашем исходном сообщении.
Можете ли вы взять его отсюда?
ОБНОВЛЕНИЕ
Вот логика разбить строку на группы по мере необходимости.Проверьте «цифру» каждого символа.Если он отличается от предыдущего символа, вам нужно начать новую подстроку.
instr = "abc123abc456abc7891"
substr = ""
sub_list = []
prev_digit = instr[0].isdigit()
for char in instr:
# if the character's digit-ness is different from the last one,
# then "tie off" the current substring and start a new one.
this_digit = char.isdigit()
if this_digit != prev_digit:
sub_list.append(substr)
substr = ""
prev_digit = this_digit
substr += char
# Add the last substr to the list
sub_list.append(substr)
print(sub_list)
Вывод:
['abc', '123', 'abc', '456', 'abc', '7891']