Pythonでは、文字列の置換を行うためのメソッドが複数存在します。この記事では、特に複数条件の文字列置換に焦点を当て、それぞれのメソッドの特徴と使い分けについて紹介します。
replaceメソッド
Pythonの組み込み文字列メソッドであるreplace
は、単独の置換にしか使えないため、複数の置換を行う場合にはコードが長くなりがちです。また、先にreplaceされて出てきた文字列があとのreplaceで対象になってしまう現象があります。
"YES NO YES NO".replace("YES", "NO").replace("NO", "YES") # "YES YES YES YES"
この例では、”YES”と”NO”を相互に入れ替えることが目的でしたが、結果としてすべての文字列が”YES”になってしまいます。
re.subメソッド
re.sub
メソッドは、正規表現を使って置換を行うことができます。以下に、母音(aeiouAEIOU)を’1’に、それ以外の全て(空白なども含む)を’0’に置き換える例を示します。
import re
def replace_vowels_and_others(s):
s = re.sub(r'[aeiouAEIOU]', '1', s)
s = re.sub(r'[^1]', '0', s)
return s
この関数は、まず母音を’1’に置き換え、次に’1’以外の全てを’0’に置き換えます。
multi_replace関数
複数の文字列やパターンを同時に置換するためのmulti_replace
関数を作成することも可能です。この関数は、.replace
を連ねる場合と違い、ある置換結果がさらに別の置換を受けてしまうことはありません。
import re
def multi_replace(string, mapping):
pattern = "|".join(map(re.escape, mapping.keys()))
return re.sub(pattern, lambda m: mapping[m.group()], string)
この関数は、置換マッピングを引数として受け取り、指定されたすべての置換を一度に行います。
以上、Pythonで複数条件の文字列置換を行う方法について説明しました。適切なメソッドを選択することで、より効率的なコードを書くことができます。