Pythonで文字列置換された場所を簡単に発見するには?(コードつき)

02/10/2021

A8バナー広告

文字列を扱うシステム開発してると、文字列の差分表示をしたくなります。
さらには、差分があるところになんか処理したくなることもよくよくあります。

この記事で書くこと

スペースが改行に置換されたところを知りたい。言い換えると、テキストアライメントを取得したい。

この記事の前提

  • ある作業で少し困ったファイルに出会った。
  • システム都合で、改行が自動的にスペースに変換されている。
  • 的に改行は大切なことがあるので、スペースから改行に復元したい。
  • システム処理前のテキスト処理前(改行あり)とシステム処理後のテキスト(スペース置換)の両方が手元にある。
  • 復元規則を発見するために、システム処理前と処理後の比較をしたい。

こんな風に実現する

の標準パッケージでdifflibというのがある。

difflibの中にget_opcodes()というメソッドがあって、これが文字列の置換情報を表示してくれる。

まずはテスト的に使ってみる。確かにスペースが改行になったところが文字インデックスで取得できている。

作った関数