Pythonで文字列を置換する:replace(), re.sub()

Python で文字列を別の文字列で置換したいときは replace あるいは re.sub を使います。

replace は単純な文字列置換を行います。正規表現を利用したより複雑な置換を行うためには標準ライブラリの re モジュールにある re.sub を使用します。

replace を使用して文字列を置換する

replace の記述方法は以下の通りです。

置換後の文字列 = 対象の文字列.replace(置換される文字列, 置換する文字列 [, 置換回数])

replace は置換した文字列を返します。第1引数に置換される文字列を指定し、第2引数に置換する文字列を指定します。

以下は小文字の b を大文字の B に置換する例です。

# -*- coding: utf-8 -*-

# 対象の文字列
src = "aaabbbccc"

# すべて置換
dst = src.replace("b", "B")

print src, "->", dst    # aaabbbccc -> aaaBBBccc

第3引数の置換回数は省略可能ですが、引数に渡すことで置換する最大の回数を設定することができます。

# -*- coding: utf-8 -*-

# 対象の文字列
src = "aaabbbccc"

# 1つだけ置換
dst = src.replace("b", "B", 1)

print src, "->", dst    # aaabbbccc -> aaaBbbccc

re.sub を使用して正規表現で文字列を置換する

正規表現で文字列を置換する場合は re.sub メソッドを使用します。

置換後の文字列 = re.sub(正規表現, 置換する文字列, 置換される文字列 [, 置換回数])

re.sub メソッドは第1引数に正規表現パターンを指定し、第2引数には置換する文字列を指定し、第3引数には置換される文字列を指定します。第4引数は省略できますが、指定すると指定回数だけ文字列の置換が行われます。

以下は小文字のアルファベットの連続を 0 で置換した例です。

# -*- coding: utf-8 -*-

import re

# 対象の文字列
text = "abc123def456efg"

# 連続した小文字のアルファベットを置換
result = re.sub(r'[a-z]+', "0", text)

print result # 01230456340

実行結果よりアルファベットの連続がすべて 0 に置換されていることが確認できます。

Python の正規表現パターンや re モジュールの詳細な説明は「Pythonの正規表現の基本的な使い方」の記事を参照してください。


イベント