5

我需要用 python 突出显示两个简单字符串之间的差异,将不同的子字符串包含在 HTML 跨度属性中。所以我正在寻找一种简单的方法来实现以下示例所示的功能:

hightlight_diff('Hello world','HeXXo world','red')

...它应该返回字符串:

'He<span style="color:red">XX</span>o world'

我已经用谷歌搜索并看到了提到的 difflib,但它应该已经过时了,而且我还没有找到任何好的简单演示。

4

1 回答 1

8

您需要的一切都来自 difflib - 例如:

>>> import difflib
>>> d = difflib.Differ()
>>> l = list(d.compare("hello", "heXXo"))
>>> l
['  h', '  e', '- l', '- l', '+ X', '+ X', '  o']

该列表中的每个元素都是您的两个输入字符串中的一个字符,前缀为

  • " "(2 个空格),两个字符串中该位置的字符
  • "- "(破折号空格),字符出现在第一个字符串中的那个位置
  • "+ "(加空格),第二个字符串中该位置出现的字符。

遍历该列表,您可以准确构建您要创建的输出。

没有提到 difflib 在docs中以任何方式过时或弃用。

于 2012-02-22T14:30:18.047 回答