Python difflib:通过将行列表与单个大型组合行

时间:2017-06-26 12:44:57

标签: python diff difflib

问题

假设我有一个文本片段列表t1

t1 = [
    'Hello everybody, ',
    'this is by ',
    'far the best ',
    'chicken I had ',
    'in my entire ',
    'life.'
]

另一方面,我的文字t2组合而略有变化:

t2 = 'Hello everybody, this was by far the best beef I had in my entire life.'

有没有办法可以创建一个差异,向我显示每个细分的差异?因此,结果应该与此类似:

  Hello everybody,
- this is by
+ this was by
  far the best
- chicken I had
+ beef I had
  in my entire
  life.

所以我不知何故需要将组合文本映射回单个段。 difflib(或其他第三方库)中是否有任何函数可以为我执行此操作?

当前解决方案

目前我通过首先组合t1来创建差异,然后创建一个详细的差异,显示该行内的变化:

d = difflib.Differ()
diff = d.compare([''.join(t1)], [t2])

现在我必须评估输出并尝试将所有内容映射回我之前使用过的段。我认为这会有效,但在我为此解决方案投入大量精力之前,我认为可能值得尝试找出,如果有更简单的解决方案,可能会自动进行这种重新映射。

感兴趣的人的背景

我一方面最终得到这个分段文本而另一方面结合文本的原因如下:对于每个文本段,都有时间戳(存储在不同的文件中),用于定义文本的哪个时间有人说了。这对于在播放视频时突出显示文本非常重要(将其视为字幕)。用户现在应该能够对此文本提交更正,因为我希望他们能够在整个文档中进行编辑,而不限制边界,我只是简单地呈现组合文本。现在,当用户进行编辑时,我必须使用结果并尝试找出编辑发生的段,然后相应地更新(或组合或删除)段。

0 个答案:

没有答案