背景信息
我有一个Python脚本,它用docx模块生成word文档。这些文档是根据日志生成的,然后作为记录打印和存储。但是,日志可以追溯编辑,因此需要修订文档记录,并且必须跟踪这些修订。实际上,我并不是在修改文档,而是生成一个新文档,它显示当前日志中的内容与即将在日志中显示的内容之间的差异(打印修订后的文件后更新日志)。当修订发生时,我的脚本使用diff_match_patch来生成一个标记,其中包含以下函数所做的更改:def revFinder(str1,str2):
dmp = dmp_module.diff_match_patch()
diffs = dmp.diff_main(str1,str2)
paratext = []
for diff in diffs:
paratext.append((diff[1], '' if diff[0] == 0 else ('s' if diff[0] == -1 else 'b')))
return paratext
docx可以将文本作为字符串,如果需要逐字格式化,则可以使用元组,因此[请参阅“一些要注意的事项”中的第二个项目]
^{pr2}$
生产Hello my nameis Brad
问题
diff_match_patch是一个非常有效的代码,它可以发现两个文本之间的差异。不幸的是,它有点太高效了,所以用dune替换{}会导致redunante
这很难看,但用一个词就行了。但是,如果整个段落被替换,结果将完全不可读。这不好。在