我有两块文本,我想比较并查看在 Python 中添加/删除/修改了哪些单词/行(类似于 Wiki 的 Diff 输出)。
我尝试过 difflib.HtmlDiff 但它的输出不太漂亮。
Python(或外部库)中是否有一种方法可以生成两组文本块的差异的干净的 HTML? (不仅是行级,还包括行内的单词/字符修改)
通常,如果您希望某些 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,提取正文,并在其前面加上我自己手写的 HTML 块和大量 CSS,以使其看起来不错。我也可能会删除图例表并将其移至顶部或将其放入 div 中,以便 CSS 可以做到这一点。
实际上,我会认真考虑修复 difflib 模块(用 python 编写)以生成更好的 HTML 并将其贡献回项目。如果您有 CSS 专家来帮助您或者您自己就是专家,请考虑这样做。
我最近发布了一个 python 脚本,它就是这样做的:diff2HtmlCompare(点击链接查看屏幕截图)。在底层,它包装了 difflib 并使用 pygments 进行语法突出显示。
首先尝试通过 lxml.html 清理 HTML,然后通过 difflib 检查差异