[Python] 正規表現(re)を使用した置換で置換後文字列のエスケープシーケンスが展開されてしまう問題の対処

最終更新日

Comments: 0

環境

Python 3.7.9

問題

以下のコードにて “kuso\n\nkuso” と出力されてほしいところに、
“kuso

kuso” と表示されてしまう。

出力

対処

re — 正規表現操作 — Python 3.7.10 ドキュメント

公式ドキュメントによると、replにエスケープシーケンス文字列が含まれるとエスケープ処理が行われてしまうようなので以下どちらかで対処。

  • 文字列変数をraw文字列に変換するrepr()を使用

    先頭と末尾に ‘ が付かないようにスライスも使用。

  • 一旦ダミー文字列に変換してstring.replace()で置換。

出力

おわい

re.sub() に repl はエスケープ処理しないオプションとか無いのでしょうか?

おわい

シェアする