サイトアイコン Python Snippets

文字列の置換 (単純置換・正規表現置換) re.sub replace regexp

単純置換

>>> "spam".replace("pa", "PA")
'sPAm'

正規表現置換

re.sub(pattern, repl, string)

>>> re.sub(r'[\d]+', "abc", "A123B")
'AabcB'

後方参照 \1, \2 … で参照可能。
raw文字列で指定しないと、文字列のエスケープ文字とみなされるので、\1 がアスキーコード 0x01 に置換されてしまう。raw文字列にしておくのが無難。

>>> re.sub(r'(\d)(\d+)', r"abc\1-\2", "A123B")
'Aabc1-23B'

関数で置換文字列生成。関数の引数mにマッチングオブジェクトが入る。

>>> def func(m):
...   n=int(m.group())
...   return str(n*2)
... 
>>> re.sub(r'(\d+)', func, "A128B")
'A256B'

同様にlambda式で。

>>> >>> re.sub(r'(\d+)', lambda m:str(int(m.group())*3), "A123B")
'A369B'
関連記事:

モバイルバージョンを終了