Как выполнить несколько замен в строке так, следующие замены не перетирали результат предыдущих?

Решил расшифровать зашифрованный текст с помощью for и replace() , но столкнулся с проблемой. Я заметил, что перебор начинает идти по второму кругу и заменять уже заменённые символы. Как можно решить это проблему?

#Входный текст
input = "абвгде ёжзжг ижйжгкл абмлкадёкжнико окппл рстжойб тгуфжмнлулсхйк тбёжгцйбспчтлкижпд ё тжгёдж зксд йкожиб тгувдёкйух нд бвйугршулу йжбвдзйдж гкспжйух у шуёбпйдц мбпбгдж сцбшу с йкоже фжнйбе нбспйбспчщ мбйжъ абмлкак"
#известный алфавит
data_crypt = {
    "а":"д",
    "б":"о",
    "в":"б",
    "г":"р",
    "д":"ы",
    "е":"й",
    "ё":"в",
    "ж":"е",
    "з":"ч",
    "и":"е",
    "й":"р",
    "к":"а",
    "л":"л",
    "м":"к",
    "н":"м",
    "о":"ш",
    "п":"т",
    "р":"у",
    "с":"с",
    "т":"п",
    "у":"и",
    "ф":"з",
    "х":"я",
    "ц":"х",
    "ч":"ь",
    "ш":"ж",
    "щ":"ю",
    "ъ":"ц"
}

for char in data_crypt.keys():
    input = input.replace(char, data_crypt[char])
    print(input)
#print тут стоит для проверки хода замен программы

На выходе получаю вот это:

дбвгде ёжзжг ижйжгкл дбмлкддёкжнико окппл рстжойб тгуфжмнлулсхйк тбёжгцйбспчтлкижпд ё тжгёдж зксд йкожиб тгувдёкйух нд бвйугршулу йжбвдзйдж гкспжйух у шуёбпйдц мбпбгдж сцбшу с йкоже фжнйбе нбспйбспчщ мбйжъ дбмлкдк
довгде ёжзжг ижйжгкл домлкддёкжнико окппл рстжойо тгуфжмнлулсхйк тоёжгцйоспчтлкижпд ё тжгёдж зксд йкожио тгувдёкйух нд овйугршулу йжовдзйдж гкспжйух у шуёопйдц мопогдж сцошу с йкоже фжнйое носпйоспчщ мойжъ домлкдк
добгде ёжзжг ижйжгкл домлкддёкжнико окппл рстжойо тгуфжмнлулсхйк тоёжгцйоспчтлкижпд ё тжгёдж зксд йкожио тгубдёкйух нд обйугршулу йжобдзйдж гкспжйух у шуёопйдц мопогдж сцошу с йкоже фжнйое носпйоспчщ мойжъ домлкдк
добрде ёжзжр ижйжркл домлкддёкжнико окппл рстжойо труфжмнлулсхйк тоёжрцйоспчтлкижпд ё тжрёдж зксд йкожио трубдёкйух нд обйурршулу йжобдзйдж ркспжйух у шуёопйдц мопордж сцошу с йкоже фжнйое носпйоспчщ мойжъ домлкдк
ыобрые ёжзжр ижйжркл ыомлкыыёкжнико окппл рстжойо труфжмнлулсхйк тоёжрцйоспчтлкижпы ё тжрёыж зксы йкожио трубыёкйух ны обйурршулу йжобызйыж ркспжйух у шуёопйыц мопорыж сцошу с йкоже фжнйое носпйоспчщ мойжъ ыомлкык
ыобрый ёжзжр ижйжркл ыомлкыыёкжнико окппл рстжойо труфжмнлулсхйк тоёжрцйоспчтлкижпы ё тжрёыж зксы йкожио трубыёкйух ны обйурршулу йжобызйыж ркспжйух у шуёопйыц мопорыж сцошу с йкожй фжнйой носпйоспчщ мойжъ ыомлкык
ыобрый вжзжр ижйжркл ыомлкыывкжнико окппл рстжойо труфжмнлулсхйк товжрцйоспчтлкижпы в тжрвыж зксы йкожио трубывкйух ны обйурршулу йжобызйыж ркспжйух у шувопйыц мопорыж сцошу с йкожй фжнйой носпйоспчщ мойжъ ыомлкык
ыобрый везер иейеркл ыомлкыывкенико окппл рстеойо труфемнлулсхйк товерцйоспчтлкиепы в тервые зксы йкоеио трубывкйух ны обйурршулу йеобызйые ркспейух у шувопйыц мопорые сцошу с йкоей фенйой носпйоспчщ мойеъ ыомлкык
ыобрый вечер иейеркл ыомлкыывкенико окппл рстеойо труфемнлулсхйк товерцйоспчтлкиепы в тервые чксы йкоеио трубывкйух ны обйурршулу йеобычйые ркспейух у шувопйыц мопорые сцошу с йкоей фенйой носпйоспчщ мойеъ ыомлкык
ыобрый вечер еейеркл ыомлкыывкенеко окппл рстеойо труфемнлулсхйк товерцйоспчтлкеепы в тервые чксы йкоеео трубывкйух ны обйурршулу йеобычйые ркспейух у шувопйыц мопорые сцошу с йкоей фенйой носпйоспчщ мойеъ ыомлкык
ыобрыр вечер еереркл ыомлкыывкенеко окппл рстеоро труфемнлулсхрк товерцроспчтлкеепы в тервые чксы ркоеео трубывкрух ны обрурршулу реобычрые рксперух у шувопрыц мопорые сцошу с ркоер фенрор носпроспчщ мореъ ыомлкык
ыобрыр вечер еерерал ыомлаыываенеао оаппл рстеоро труфемнлулсхра товерцроспчтлаеепы в тервые часы раоеео трубыварух ны обрурршулу реобычрые расперух у шувопрыц мопорые сцошу с раоер фенрор носпроспчщ мореъ ыомлаыа
ыобрыр вечер еерерал ыоклаыываенеао оаппл рстеоро труфекнлулсхра товерцроспчтлаеепы в тервые часы раоеео трубыварух ны обрурршулу реобычрые расперух у шувопрыц копорые сцошу с раоер фенрор носпроспчщ кореъ ыоклаыа
ыобрыр вечер еерерал ыоклаыываемеао оаппл рстеоро труфекмлулсхра товерцроспчтлаеепы в тервые часы раоеео трубыварух мы обрурршулу реобычрые расперух у шувопрыц копорые сцошу с раоер фемрор моспроспчщ кореъ ыоклаыа
ышбрыр вечер еерерал ышклаыываемеаш шаппл рстешрш труфекмлулсхра тшверцршспчтлаеепы в тервые часы рашееш трубыварух мы шбрурршулу решбычрые расперух у шувшпрыц кшпшрые сцшшу с рашер фемршр мшспршспчщ кшреъ ышклаыа
ышбрыр вечер еерерал ышклаыываемеаш шаттл рстешрш труфекмлулсхра тшверцршстчтлаееты в тервые часы рашееш трубыварух мы шбрурршулу решбычрые растерух у шувштрыц кштшрые сцшшу с рашер фемршр мшстршстчщ кшреъ ышклаыа
ышбуыу вечеу ееуеуал ышклаыываемеаш шаттл устешуш тууфекмлулсхуа тшвеуцушстчтлаееты в теувые часы уашееш туубывауух мы шбуууушулу уешбычуые уастеуух у шувштуыц кштшуые сцшшу с уашеу фемушу мшстушстчщ кшуеъ ышклаыа
ышбуыу вечеу ееуеуал ышклаыываемеаш шаттл устешуш тууфекмлулсхуа тшвеуцушстчтлаееты в теувые часы уашееш туубывауух мы шбуууушулу уешбычуые уастеуух у шувштуыц кштшуые сцшшу с уашеу фемушу мшстушстчщ кшуеъ ышклаыа
ышбуыу вечеу ееуеуал ышклаыываемеаш шаппл успешуш пууфекмлулсхуа пшвеуцушспчплаеепы в пеувые часы уашееш пуубывауух мы шбуууушулу уешбычуые уаспеуух у шувшпуыц кшпшуые сцшшу с уашеу фемушу мшспушспчщ кшуеъ ышклаыа
ышбиыи вечеи ееиеиал ышклаыываемеаш шаппл испешиш пиифекмлилсхиа пшвеицишспчплаеепы в пеивые часы иашееш пиибываиих мы шбиииишили иешбычиые иаспеиих и шившпиыц кшпшиые сцшши с иашеи фемиши мшспишспчщ кшиеъ ышклаыа
ышбиыи вечеи ееиеиал ышклаыываемеаш шаппл испешиш пиизекмлилсхиа пшвеицишспчплаеепы в пеивые часы иашееш пиибываиих мы шбиииишили иешбычиые иаспеиих и шившпиыц кшпшиые сцшши с иашеи земиши мшспишспчщ кшиеъ ышклаыа
ышбиыи вечеи ееиеиал ышклаыываемеаш шаппл испешиш пиизекмлилсяиа пшвеицишспчплаеепы в пеивые часы иашееш пиибываиия мы шбиииишили иешбычиые иаспеиия и шившпиыц кшпшиые сцшши с иашеи земиши мшспишспчщ кшиеъ ышклаыа
ышбиыи вечеи ееиеиал ышклаыываемеаш шаппл испешиш пиизекмлилсяиа пшвеихишспчплаеепы в пеивые часы иашееш пиибываиия мы шбиииишили иешбычиые иаспеиия и шившпиых кшпшиые схшши с иашеи земиши мшспишспчщ кшиеъ ышклаыа
ышбиыи веьеи ееиеиал ышклаыываемеаш шаппл испешиш пиизекмлилсяиа пшвеихишспьплаеепы в пеивые ьасы иашееш пиибываиия мы шбиииишили иешбыьиые иаспеиия и шившпиых кшпшиые схшши с иашеи земиши мшспишспьщ кшиеъ ышклаыа
ыжбиыи веьеи ееиеиал ыжклаыываемеаж жаппл испежиж пиизекмлилсяиа пжвеихижспьплаеепы в пеивые ьасы иажееж пиибываиия мы жбиииижили иежбыьиые иаспеиия и живжпиых кжпжиые схжжи с иажеи земижи мжспижспьщ кжиеъ ыжклаыа
ыжбиыи веьеи ееиеиал ыжклаыываемеаж жаппл испежиж пиизекмлилсяиа пжвеихижспьплаеепы в пеивые ьасы иажееж пиибываиия мы жбиииижили иежбыьиые иаспеиия и живжпиых кжпжиые схжжи с иажеи земижи мжспижспью кжиеъ ыжклаыа
ыжбиыи веьеи ееиеиал ыжклаыываемеаж жаппл испежиж пиизекмлилсяиа пжвеихижспьплаеепы в пеивые ьасы иажееж пиибываиия мы жбиииижили иежбыьиые иаспеиия и живжпиых кжпжиые схжжи с иажеи земижи мжспижспью кжиец ыжклаыа

Первые два слова должны получиться Добрый вечер, но как можно заметить, при одной из итерации все начинает заменятся повторно.
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
0xD34F
@0xD34F
Вместо того, чтобы перебирать "алфавит" и заменять символы по одному, перебирайте "зашифрованный" текст и подставляйте вместо текущего символа соответствующий ему из "алфавита":

decoded = ''.join(data_crypt.get(n, n) for n in text)
print(decoded)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы