ホームページ >バックエンド開発 >Python チュートリアル >文字列内の複数の文字を効率的に置換するにはどうすればよいですか?

文字列内の複数の文字を効率的に置換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-02 02:52:10978ブラウズ

How to Efficiently Replace Multiple Characters in a String?

文字列内の複数の文字を置換する最良の方法

元の質問:
文字列内の複数の文字を効率的に置換するにはどうすればよいですか。 & -> など&, # -> # など?

最初のアプローチ (逐次置換)

提供されたコードは機能しますが、複数の逐次置換が含まれるため、非効率となる可能性があります。

strs = strs.replace('&', '\&')
strs = strs.replace('#', '\#')
...

2 番目アプローチ (置換の連鎖)

より効率的なアプローチは、

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)

追加のヒント

速度を最適化 (~2x)改善)

入力文字列内の各文字の存在をチェックする代わりに、反復子を使用して置換される文字をループします。これにより、パフォーマンスが大幅に向上します。

Python 3 を使用する

Python 3 は、より高速な文字列操作機能により、文字置換タスクで Python 2 よりも優れたパフォーマンスを発揮します。

以上が文字列内の複数の文字を効率的に置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。