背景资料
我有一个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可以将文本作为字符串,或者如果需要逐字格式化,则可以将文本作为元组,因此[请参阅“需要注意的事项”中的第二个项目符号]
[("Hello, ", ''), ("my name ", 'b'), ("is Brad", 's')]
产生
Hello my name
is Brad
问题
diff_match_patch是一个非常有效的代码,它可以找到两个文本之间的差异.不幸的是,它有点太高效,所以用沙丘取代多余的结果
redun
ante
这很丑陋,但单词却很好.但是,如果整个段落被替换,结果将完全不可读.那不行.