単純置換
>>> "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'