2016-10-09 8 views
1

Ich schreibe ein Stück Python-Code, um eine Sequenz von Alphabet zu ersetzen. Ich verstehe, wie man es tut, aber leider ersetzt es nur das, das bereits ersetzt worden ist.Ersetzen Zeichenfolge in Python mit einer Sequenz von Alphabet

lines=[] 
replacements = {'a':'s','s':'d','d':'f','f':'g','g':'h','h':'j','j':'k','k':'l'} 

with open("wrongString.txt") as infile: 
    for line in infile: 
     for src,target in replacements.iteritems(): 
      line = line.replace(src,target) 
     lines.append(line) 

with open("decode.txt","w") as outfile: 
     for line in lines:    
      outfile.write(line) 

wrongstring.txt: asdfghjkl

Nach dem Code ausgeführt wird, das Ergebnis zeigt (encode.txt): ggggkkkll

Der Code "a" bis "e" nicht ersetzen, und halten Sie ersetzen das "s" soll "d" sein, bis irgendwie "g" wird. Ich möchte nur "a" als "s" ersetzen und dann aufhören, es zu ersetzen.

Können Sie mir helfen, eine Lösung dafür zu finden?

Danke für Ihre Antwort!

Antwort

1

verwenden, um eine Liste comp, so dass Sie keine Zeichen ersetzt überschreiben:

line = "".join([replacements.get(ch, ch) for ch in line]) 

Sie brauchen auch nicht alle Linien zu speichern, schreiben Sie einfach die Zeilen, wie Sie gehen:

with open("wrongString.txt") as infile, open("decode.txt","w") as outfile: 
    outfile.writelines("".join([replacements.get(ch,ch) 
            for ch in line]) for line in infile)) 
+1

Schön! es funktioniert wie ein Zauber: D. Vielen Dank –

Verwandte Themen