Python 单线差分

Python 单线差分,python,diff,Python,Diff,我发现的所有差异工具都只是逐行比较,而不是逐字符比较。是否有提供单行字符串详细信息的库?也许还有一个百分比的差异,不过我想有单独的函数来实现这一点?您可以尝试将两个字符串逐个字符分割成行,然后使用diff。这是一个肮脏的黑客,但至少它应该工作,是相当容易实现 或者,您可以在Python中将字符串拆分为字符列表并使用difflib。检查我最近在找类似的东西,偶然发现了。它对单词而不是字符进行操作,但这是否接近您要查找的内容?此算法逐字区分: 提供Python和PHP版本。它甚至可以使用和标记输出

我发现的所有差异工具都只是逐行比较,而不是逐字符比较。是否有提供单行字符串详细信息的库?也许还有一个百分比的差异,不过我想有单独的函数来实现这一点?

您可以尝试将两个字符串逐个字符分割成行,然后使用diff。这是一个肮脏的黑客,但至少它应该工作,是相当容易实现


或者,您可以在Python中将字符串拆分为字符列表并使用difflib。检查

我最近在找类似的东西,偶然发现了。它对单词而不是字符进行操作,但这是否接近您要查找的内容?

此算法逐字区分:


提供Python和PHP版本。它甚至可以使用
标记输出HTML格式的输出。

您可以实现一个简单的Neederman–Wunsch算法。伪代码可以在维基百科上找到:

我想到了这一点,它看起来是迄今为止最好的选择。我也考虑过研究line diff工具,并尝试让它将字符作为行来处理。。。但是我想我应该先检查一下。这很容易做到
diff这里是一个字符对字符的版本
diff很好,但是空格也应该很重要。一个标签被一个空格所取代,这将是一个不同点,但这并没有体现出来。源代码看起来很简单。您可以很容易地将其更改为在空字符串上拆分,而不是在空白处拆分,这样就可以逐个字符进行区分。实际上,通过将字符串直接传递给diff(),而不是通过stringDiff(),这种方法非常有效。在逐字符的基础上工作得很好,因为字符串是python中的序列。函数的输出也很容易处理。我想知道当每个项目只有一个字符时,寻找最大的公共子字符串的开销是多少。。。虽然我可能误解了代码…很好,但是空格也很重要。用空格代替制表符将是一种区别,而不是用空格分隔。@lhf,它是被放弃了,还是根本没有什么需要改进的地方了?@Aleksandr,我现在看到wdiff在我发表评论后很快就恢复了。看@lhf,很好!16年没有发展,现在又回到了游戏中。这不是重复的吗?