\

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で複数条件の文字列置換を行う方法について説明しました。適切なメソッドを選択することで、より効率的なコードを書くことができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です