2017-02-08 9 views
0

私のコードでは、すべてのIsを1に、すべてのosを0に置き換える必要があります。私は、次のようなコードである二つの文でそれを行うことができます。Pythonの文字列に複数の文字を一度に置き換えます

stringtochange=raw_input("What do you want to change?") 
print stringtochange.replace("I","1") 
print stringtochange.replace("o","0") 

が、私はそれが一挙にそれをすべて行う必要があります。何か案は?

あなたが string.translateを使用することができます
+0

質問を編集してPython2.xまたはPython3.xタグを含めてください。 args for str.translateがPy2とPy3の間で多く変更されました –

+0

@johnmachinはそうです、ごめんなさい。 – byu

答えて

3

s = "IslkdoIoooI" 
import string 
s.translate(string.maketrans("Io", "10")) 

# '1slkd010001' 
0

あなたはリストの内包表記を使用して複数の値をマッピングすることができます。

str = "Itesto" 
source = ['I', 'o'] 
dest = ['1', '0'] 
''.join([dest[source.index(i)] if i in source else i for i in str]) 
>> '1test0' 
+0

良い答え - スタイルなどに関するいくつかの注釈:自分のオブジェクトに 'str'という名前を使用しないでください。内蔵タイプを外します。また、スコープの幅があまり広くない場合は、1文字の名前を使用することもできます。しかし、私(とjとk)は、ほとんどの人に "インデックス"を意味します。あなたの '私は'文字です。それを 'c'と呼ぶ方が良いでしょう。 –

0

この代替は、置換文字に元の文字をマップするためにdictを使用しています。

>>> s = "HIJnop"; xmap = {"I": "1", "o": "0"}; ''.join([xmap.get(c, c) for c in s]) 
'H1Jn0p' 
関連する問題