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