元の質問:
文字列内の複数の文字を効率的に置換するにはどうすればよいですか。 & -> など&, # -> # など?
提供されたコードは機能しますが、複数の逐次置換が含まれるため、非効率となる可能性があります。
strs = strs.replace('&', '\&') strs = strs.replace('#', '\#') ...
より効率的なアプローチは、
text.replace('&', '\&').replace('#', '\#')
テスト: 文字列 abc&def#ghi 内の文字 & と # を置き換えます。
Method | Time (μs per loop) |
---|---|
Chaining replacements | 0.814 |
文字を置換するには、他にもさまざまなメソッドが利用可能です文字列内:
import re rx = re.compile('([&#])') text = rx.sub(r'\', text)
def mk_esc(esc_chars): return lambda s: ''.join(['\' + c if c in esc_chars else c for c in s]) esc = mk_esc('&#') text = esc(text)
chars = "&#" for c in chars: text = text.replace(c, "\" + c)
入力文字列内の各文字の存在をチェックする代わりに、反復子を使用して置換される文字をループします。これにより、パフォーマンスが大幅に向上します。
Python 3 は、より高速な文字列操作機能により、文字置換タスクで Python 2 よりも優れたパフォーマンスを発揮します。
以上が文字列内の複数の文字を効率的に置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。