4

假设我有一些文本(例如作为字符串给出)。稍后我要“编辑”这个文本,这意味着我想在某处添加一些东西或删除一些东西。这样我会得到另一个版本的文本。但是,我不想让两个字符串代表文本的每个版本,因为两个后续版本之间有很多“重复”(相似性)。换句话说,字符串之间的差异很小,因此仅保存它们之间的差异更有意义。例如,第一个版本。

This is my first version of the texts.

第二个版本:

This is the first version of the text, that I want to use as an example.

我想将这两个版本保存为一个对象(不一定是XML,我只是作为一个例子):

This is the <removed>my</removed> <added>first</added> version of the text<added>, that I want to use as an example</added>.

现在我想更进一步。我想将所有后续编辑保存为一个对象。换句话说,我将拥有两个以上版本的文本,但我想将它们保存为一个对象,以便轻松获取给定版本的文本并轻松找出两者之间的区别两个后续(或任何两个给定)版本。

所以,总而言之,我的问题是:表示文本变化并使用 Python 处理这种表示的标准方法是什么。

4

1 回答 1

1

我可能会选择difflibhttps ://docs.python.org/2/library/difflib.html

您可以使用它来表示字符串版本之间的更改并创建自己的类来存储连续的差异。

编辑:我刚刚意识到这在您的用例中并没有真正意义,因为来自 difflib 的差异本质上是存储两个字符串,所以最好只存储它们。但是我相信这是处理文本更改的标准(图书馆)方式,所以我不会删除这个答案。

EDIT2:虽然看起来如果你找到一种适用unified_diff于字符串的方法,这可能是你的答案。似乎还没有办法用 difflib 做到这一点:https ://bugs.python.org/issue2057

于 2015-03-30T07:43:28.510 回答