观察文本中的变化?

时间:2014-12-11 09:40:24

标签: python difflib

我有以下问题。 我更改了在线文章的某些部分 之后,其他人开始编辑此在线文章。

现在我正在尝试使用python编写一个代码来识别,如果我之后的人在我改变的部分中改变了一些东西(以及在添加/删除的字符中测量了多少)。

例如: 文字是: 你好Wolrd!今天发生了什么?再见 我将文本更改为: 你好Wolrd!今天发生了什么?今天我写了一个考试。再见 我之后的家伙编辑: 你好Wolrd!今天发生了什么?今天我写了一本数学考试。再见

现在,代码应该确定,她改变了“n math”并告诉我她改变了多少百分比的编辑。在这种情况下: 大约20%。

我开始使用“difflib”,但现在我发现代码没有任何意义。 我的代码执行了以下操作: 使用difflib,我想出了我改变的文本中的位置。     @@ -1,4 +1,4 @@
之后,我检查了我之后以同样方式改变的那些人。     @@ -1,6 +1,6 @@。在此之后,我比较了,如果行是相同的(+值相等 - 值)。但现在,我发现,这没有成功。如果我之后的人开始在我改变的部分的中间编辑。

有人知道,该怎么办?

1 个答案:

答案 0 :(得分:0)

差异匹配补丁库(模块diff_match_patch)产生更清晰的输出并且更易于理解:

取自官方文件:

diff_main("Good dog", "Bad dog") => [(-1, "Goo"), (1, "Ba"), (0, "d dog")]

使用实际代码:

from diff_match_patch import diff_match_patch
D = diff_match_patch()
D.diff_main("Good dog", "Bad dog")

a' -1'是删除

a' 1'是一个补充

a' 0'意味着没有变化

请参阅:https://code.google.com/p/google-diff-match-patch/wiki/API