Python(Wikiの差分出力に似ています)でどの単語/行が追加/削除/変更されたかを比較して確認したい2つのテキストチャンクがあります。
Difflib.HtmlDiffを試しましたが、出力がきれいではありません。
Python(または外部ライブラリ)に、2セットのテキストチャンクの差分のきれいなHTMLを生成する方法はありますか?(行レベルだけでなく、内の単語/文字の変更も)ライン)
Googleの diff-match-patch ライブラリにdiff_prettyHtml()
があります。
一般に、HTMLをよりきれいにレンダリングしたい場合は、CSSを追加します。
たとえば、次のようなHTMLを生成する場合:
import difflib
import sys
fromfile = "xxx"
tofile = "zzz"
fromlines = open(fromfile, 'U').readlines()
tolines = open(tofile, 'U').readlines()
diff = difflib.HtmlDiff().make_file(fromlines,tolines,fromfile,tofile)
sys.stdout.writelines(diff)
次に、追加された行に緑の背景、変更された行に黄色、削除された行に赤が表示されます。これを行う場合は、生成されたHTMLを取得し、本文を抽出して、見栄えを良くするために、CSSを多く含む独自の手書きのHTMLブロックをプレフィックスとして付けます。また、CSSがそれを実行できるように、凡例テーブルを削除して一番上に移動するか、divに配置することもできます。
実際、私はdifflibモジュール(Pythonで記述されている)を修正して、より良いHTMLを生成し、プロジェクトに貢献することを真剣に検討します。 CSSの専門家がいる場合、または自分自身である場合は、これを検討してください。
私は最近、これを行うpythonスクリプトを投稿しました: diff2HtmlCompare (スクリーンショットのリンクをたどります)。内部では、difflibをラップし、構文の強調表示にpygmentsを使用します。
グーグルシームの..ライブラリはもうアクティブな開発がないので、 diff_py を使用することをお勧めします
Githubページから:
Pythonによって書かれたシンプルなdiffツール。差分の結果は、コンソールまたはhtmlファイルに出力できます。
まず最初に、両方のHTMLをlxml.htmlでクリーンアップし、difflibで違いを確認してください。
ここ からの私自身の答えのコピー。
DaisyDiff ( Java および [〜#〜] php [〜#〜] バージョンが利用可能)はどうですか。
次の機能は本当に素晴らしいです: