2016-10-09 17 views
1

アルファベットのシーケンスを置き換えるためのPythonコードを書いています。私はそれを行う方法を理解していますが、残念ながら、それを置き換えるだけですでに置き換えられています。Pythonの文字列をアルファベットのシーケンスに置き換えてください

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:コードを実行した後

、結果を示す(encode.txt)ASDFGHJKL:ggggkkkll

コードは "" "S" に置き換え、そして置換保つん"s"は何とか "g"になるまで "d"になる。私はちょうど "a"を "s"に置き換えて、それを置き換えないようにしたい。

あなたは私の解決策を見つけるのを手伝ってもらえますか?

ありがとうございました!

答えて

1

ので、あなたが任意の置き換え文字を上書きしないリストカンプを使用します。

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

また、あなたは行くようにちょうどラインを書き、すべての行を格納する必要はありません。

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

ニース!それは魅力のように働く:D。たくさんありがとう –

関連する問題