背景
レーベンシュタイン距離などの編集距離をメトリクスとして使っている時、どこが異なっているのか分析したいことがありました。
そんな背景から手軽に編集操作・差分を整形・カラー表示できるPythonライブラリを作成しましたので紹介します。
できること
すももも桃も桃のうち
すもももももももものうち
このような修正前・修正後文字列のペアの編集差分を以下のように表示できます。
削除・置換前の文字を赤で、
挿入・置換後の文字を青で、
操作する必要がない文字を緑で表示しています。
HTML出力
Consoleカラー出力
インストール
$ pip install visedit
執筆時現在Python3以降にのみ対応。
コード例
コード例(コンソールでのカラー出力)
from visedit import StringEdit
# 修正前の文字列
source_str = "すももも桃も桃のうち"
# 修正後の文字列
target_str = "すもももももももものうち"
se = StringEdit(source_str, target_str)
# コンソール出力する場合
print(se.generate_text())
# 色変更も可能
se = StringEdit(source_str, target_str, text_color_settings={
"wrong": "YELLOW", # 削除・置換前文字を黄に
"correct": "GREEN", # 挿入・置換後文字を緑に
"base": "WHITE", # 操作なし文字を白に
})
print(se.generate_text())
コード例 (IPythonでのHTML出力)
from visedit import StringEdit
from IPython.display import HTML
# 修正前の文字列
source_str = "すももも桃も桃のうち"
# 修正後の文字列
target_str = "すもももももももものうち"
se = StringEdit(source_str, target_str)
HTML(se.generate_html())
# HTMLも色変更も可能
se = StringEdit(source_str, target_str, html_color_settings={
"wrong": "YELLOW", # 削除・置換前文字を黄に
"correct": "GREEN", # 挿入・置換後文字を緑に
"base": "BLACK", # 操作なし文字を黒に
})
HTML(se.generate_html())
色は以下をサポートしています。
BLACK
RED
GREEN
YELLOW
BLUE
PURPLE
CYAN
WHITE
## おわりに
ご意見・ご要望あれば、お気軽にお願いします。