Есть txt файл с таким содержанием :
лев
шут
артур
Нужно чтобы в этом файле,каждая буква для каждой строки заменилась на ту,что в словаре. Т.е в итоге чтобы файл был таким :
ked
ien
fhneh
Вот что я написал :
d={'й':'q', 'ц':'w', 'у':'e','к':'r','е':'t','н':'y','г':'u','ш':'i',
'щ':'o','з':'p','х':'[','ъ':']','ф':'a','ы':'s','в':'d','а':'f','п':'g',
'р':'h','о':'j','л':'k','д':'l','ж':';','э':'"','я':'z','ч':'x','с':'c',
'м':'v','и':'b','т':'n','ь':'m','б':',','ю':'.','ё':'`'} # словарь
file3 = open('ассоциации.txt', 'r')
file3read = file3.readlines()
file3.close()
newfile2 = open('ассоциации.txt', 'w')
for line in file3read:
for character in line:
if character in d:
monstro = line.replace(character, d[character])
newfile2.write(monstro)
Но в итоге я получаю такой результат :
kев
лtв
леd
iут
шeт
шуn
fртур
аhтуh
арnур
артeр
аhтуh
Где я ошибся ?
str.translate()может словарь принимать напрямую – jfs Aug 10 '17 at 06:59maketrans()может молча данные испортить, если входной ключ более одного символа содержит (к примеру, из-за нормализации:'ё') и есть значения для замены из более одного символа. – jfs Aug 10 '17 at 07:42