Python: 正規表現で文字列を置換する re.sub()
Pythonで正規表現による置換処理を行う場合は、 reモジュールのsub()関数を使います。
正規表現を使わない通常の文字列置換はstrオブジェクトのreplace()メソッドを使いますが、 正規表現を使った置換の場合はreモジュールのsub()関数を使います。
ここではsub()関数の使い方について解説します。
sub()関数の書式
書式
sub(検索パターン, 置換後文字列, 検索対象文字列, count=0, flags=0)
戻り値は置換された後の文字列です。
「検索対象文字列」から「検索パターン」に一致する文字列を「置換後文字列」に置換します。
引数のcountとflagsは省略可能です。
countを省略するか「0」を指定した場合は、マッチしたすべてが置換されます。
(関連記事:正規表現での検索フラグ flags)
sub()関数のサンプルコード
次のコードは、パターン「c.t」にマッチする文字列を「xxx」に置換します。
import re p = "c.t" s = "cat hat cut hit cup" s_new = re.sub(p, "xxx", s) print(s_new) # xxx hat xxx hit cup
re.sub()で改行コードを削除
次は re.sub()を使って改行コードを削除するコードです。 置換後の文字列に「""」か「''」の空文字を指定することで削除になります。
改行コードは「\r\n」「\n」のどちらにも対応できるように、 パターンを「\r?\n」とします。
import re # パターン p = "\r?\n" s = "a\nbcd\r\nefg\r\nhi\njkl" s_new = re.sub(p, "", s) print(s_new) # abcdefghijkl