2017-10-03 8 views
0

文字列内の複数の文字を置き換える方法がわかりません。入力を取り込み、入力内の特定の文字を別の文字に置き換えるreplace(string)という関数を記述しようとしています。Pythonを使用して文字列内の複数の文字を置き換えるにはどうすればよいですか?

私は文字列「WXYZ」を持っていて、すべてのWをY、XをZ、YをW、ZをXに置き換えたいとします。入力が何であっても置換を実行したい。もし私もreplace( "WWZXWWXYYZWYYY")のようなことをすれば、私は上記のような文字を置き換える必要があります。

これは私がこれまでにやっていることです:WXWX

:私のように、コードの出力を得る

def replace(string): 
for letters in string: 
    string = string.replace("W","Y").replace("X","Z").replace("Y","W").replace("Z","X") 
print(string) 

をしかし、私はそれが( "WXYZ")を交換すると実行したときに

出力としてYZWXを得る代わりに。私はまた、Pythonの組み込み関数も使いたいと思っています。誰かが私がこれを理解するのを助けることができます、ありがとう!あなたの呼び出しがWは、最初の呼び出しでYに置き換えられ、その後、Yは再び最初の呼び出しの出力を取り消し、第三の呼び出しでWに置き換えられるように構成されている

+0

'str.translate'が進むべき道だろう。 –

答えて

4

注意。

あなたはstr.translateを使用する必要があり、それははるかに効率的かつ堅牢なチェーンreplace呼び出しの束よります:

_tab = str.maketrans(dict(zip('WXYZ', 'YZWX'))) 
def replace(string): 
    return string.translate(_tab) 

>>> replace('WXYZ') 
'YZWX' 
>>> replace("WWZYWXXWYYZW") 
'YYXWYZZYWWXY' 
+0

入力された文字列が単にWXYZであれば置き換えられませんか?文字列が何であっても、それらの文字を置き換えることを望みます。 ( "WWZYWXXWYYZW")を置き換えると、その入力を受け取り、WをY、XをZ、YをW、ZをXに置き換えます。 – Joe

+0

@Gin 'In [15]:replace(" WWZYWXXWYYZW ") ; Out [15]: 'YYXWYZZYWWXY' '次回は自分で実行しますか? –

+0

ああ、ありがとう!それを実行しないで残念です。 – Joe

関連する問題