2013-09-02 3 views
0

Donc, c'est un code que j'ai pour un programme de chiffrement:Comment chiffrer une chaîne avec les informations d'un fichier txt?

cipher = {} 
for f in open('mapping.txt'): 
    org, cip = f.split() 
    cipher[ord(org)] = cip 


inpt = input('Enter string: ') 

inpt.translate(cipher) 
print(inpt) 

ne fonctionne pas, mais le fichier texte est la suivante:

a e 
e i 
i o 
o u 
u a 

Donc ce que je veux faire est échange la voyelle avec celui qui est à côté? Je pense je suis sur la bonne voie, mais je ne suis pas sûr, quelqu'un peut-il me montrer une meilleure façon de le faire? Et les lettres dans le fichier texte ne doivent pas être voyelles, ils peuvent être quelque chose, mais cela est juste pour le test, merci d'avance :)

+1

Cela peut également être fait avec 'str.translate'. 'str.replace' retournera une réponse incorrecte dans certains cas. –

+0

@AshwiniChaudhary Où 'str.replace' échouera? – thefourtheye

+0

'inpt = inpt.translate (chiffrer [org], chiffrer [cip])' cela me donne une erreur, pouvez-vous s'il vous plaît me montrer comment cela fonctionnerait? – samir

Répondre

1
cipher = {} 
for f in open('mapping.txt'): 
    org, cip = f.split() 
    cipher[ord(org)] = cip 


inpt = input('Enter string: ') 

inpt = inpt.translate(cipher) 
print('Message: ' + inpt) 

Merci à @AshwiniChaudhary !!

0

Essayez ceci:

from string import maketrans 

input_cipher = open('mapping.txt', 'r').read() 
intab = ''.join(el[0] for el in input_cipher.split()) 
outtab = ''.join(el[1] for el in input_cipher.split()) 
trantab = maketrans(intab, outtab) 

inpt = input('Enter string: ') 

inpt = inpt.translate(trantab) 
print(inpt) 
+1

Et OP obtiendra: 'ImportError: impossible d'importer le nom maketrans' –

Questions connexes