2017-06-27 10 views
0

ある文字を別の文字に置き換える方法を探しています。例えばpython - 複数の異なる文字を1つだけ置換する

我々は持っている:

chars_to_be_replaced = "ihgr"

、我々は彼らが

new_char = "B"

に置き換えることにしたいです

新しい文字列

S = "イム空腹"

S'= "BMのbunbby" となります。

.replaceまたは正規表現を使用して一度にこの1つの文字を実行できることはよく知っていますが、文字列を1回だけ移動する方法を探しています。

re.subは文字列を1回だけ通過しますか?これを行う他の方法はありますか?おかげ

おかげで、このことについてどのように

+2

努力しないでください – Fallenhero

+0

どのようにstring.replace()をしませんかwoあなたのためのrk? – Drako

+0

あなたはあなたが削除したいそれぞれの文字の文字列を通過する必要がありますか? –

答えて

0

chars_to_be_replaced = "ihgr" 
new_char = "b" 

my_dict = {k: new_char for k in chars_to_be_replaced} 

s = "im hungry" 

new_s = ''.join(my_dict.get(x, x) for x in s) 
print(new_s) # bm bunbby 

''.join(my_dict.get(x, x) for x in s)元の文字列の各文字のために、それが元である場合には存在しない場合を除き、それは代わりに、辞書値です取得しようとします戻ってきた。


注:代わりに発電機のjoinlistを渡すことで(ビット)、それをスピードアップすることができます

new_s = ''.join([my_dict.get(x, x) for x in s]) 
+0

私はこの小さな例でのみテストしましたが、4回使用するよりも時間がかかります置き換えてください。より代表的な例で使用する必要がある –

1

あなたはstring.translate()

from string import maketrans 

chars_to_be_replaced = "ihgr" 
new_char = "b" 
s = "im hungry" 

trantab = maketrans(chars_to_be_replaced, new_char * len(chars_to_be_replaced)) 

print s.translate(trantab) 
# bm bunbby 
を使用することができます
関連する問題