代码之家  ›  专栏  ›  技术社区  ›  The Unknown

在python中生成相当不同的HTML

  •  27
  • The Unknown  · 技术社区  · 15 年前

    我有两个文本块,我想比较一下,看看哪些单词/行是在python中添加/删除/修改的(类似于wiki的diff输出)。

    我试过difflib.htmldiff,但它的输出不太漂亮。

    在python(或外部库)中,是否有一种方法可以生成两组文本块差异的外观清晰的HTML?(不仅是行级别,而且是行中的字/字符修改)

    7 回复  |  直到 6 年前
        1
  •  27
  •   Zach Young mo1010    7 年前

    diff_prettyHtml() diff-match-patch 谷歌图书馆。

        2
  •  18
  •   Michael Dillon    15 年前

    通常,如果您希望一些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专家来帮助你或者你自己,请考虑这样做。

        3
  •  3
  •   wagoodman    9 年前

    我最近发布了一个python脚本,它只执行以下操作: diff2HtmlCompare (按照链接查看屏幕截图)。在引擎盖下,它包装difflib并使用pygments突出显示语法。

        4
  •  0
  •   Oduvan    15 年前

    首先尝试用lxml.html清除两个html,然后用difflib检查差异。

        5
  •  0
  •   Community CDub    7 年前

    我自己的答案的副本 here .


    怎么样 DaisyDiff ( Java PHP Vesions可用)。

    以下功能非常好:

    • 使用格式错误的HTML,可以在“野外”中找到。
    • 与XML树的不同之处相比,HTML中的差异更为专门化。更改文本节点的一部分不会导致更改整个节点。
    • 除了默认的视觉差异之外,HTML源代码还可以前后一致地进行差异。
    • 提供易于理解的更改描述。
    • 默认的GUI允许通过键盘快捷键和链接轻松浏览修改。
        6
  •  0
  •   guettli    9 年前

    从..我建议使用Google Seams中的库,以不再有活动的开发。 diff_py

    从Github页面:

    由python编写的简单diff工具。差异结果可以在控制台或HTML文件中打印。

        7
  •  0
  •   yofee    6 年前

    不仅是行级别,而且行中的字/字符修改

    xmldiff 对于这个目的来说,似乎是一个很好的包,特别是当您有XML/HTML可供比较时。在他们的 documentation .