0

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

现在,我正在尝试使用 python 编写代码,以识别我之后的人是否在我更改的部分中更改了某些内容(以及更改了多少,以添加/删除的字符为单位)。

例如:文本是:Hello Wolrd!今天发生了什么事?再见,我将文本更改为:Hello Wolrd!今天发生了什么事?今天我写了一个考试。Goodbye The Guy after me 编辑:Hello Wolrd!今天发生了什么事?今天我写了一个数学考试。再见

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

我开始使用“difflib”,但现在我发现代码没有意义。我的代码执行了以下操作:使用 difflib,我找出了我更改的文本中的位置。@@ -1,4 +1,4 @@
然后,我检查了我后面的人以同样的方式更改的线路。@@ -1,6 +1,6 @@ 。在此之后,我比较了行是否相同(+ 值等于 - 值)。但现在,我发现,这行不通。如果我之后的那个人开始在我更改部分的中间进行编辑。

有没有人知道,怎么做?

4

1 回答 1

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")

'-1' 是删除

'1' 是加法

'0' 表示没有变化

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

于 2014-12-11T10:18:51.617 回答