假设我有一个文本片段列表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])
现在我必须评估输出并尝试将所有内容映射回我之前使用过的段。我认为这会有效,但在我为此解决方案投入大量精力之前,我认为可能值得尝试找出,如果有更简单的解决方案,可能会自动进行这种重新映射。
我一方面最终得到这个分段文本而另一方面结合文本的原因如下:对于每个文本段,都有时间戳(存储在不同的文件中),用于定义文本的哪个时间有人说了。这对于在播放视频时突出显示文本非常重要(将其视为字幕)。用户现在应该能够对此文本提交更正,因为我希望他们能够在整个文档中进行编辑,而不限制边界,我只是简单地呈现组合文本。现在,当用户进行编辑时,我必须使用结果并尝试找出编辑发生的段,然后相应地更新(或组合或删除)段。