我需要使用python突出显示两个简单字符串之间的差异,将不同的子字符串包含在HTML span属性中。所以我正在寻找一种简单的方法来实现以下示例所示的功能:
hightlight_diff('Hello world','HeXXo world','red')
...它应该返回字符串:
'He<span style="color:red">XX</span>o world'
我用google搜索并看到了difflib,但它应该已经过时了,我还没有找到任何好的简单演示。
答案 0 :(得分:8)
您需要的所有东西都来自difflib - 例如:
>>> import difflib
>>> d = difflib.Differ()
>>> l = list(d.compare("hello", "heXXo"))
>>> l
[' h', ' e', '- l', '- l', '+ X', '+ X', ' o']
该列表中的每个元素都是来自两个输入字符串的字符,前缀为
之一" "
(2个空格),两个字符串中该位置的字符"- "
(短划线空格),第一个字符串中该位置的字符"+ "
(加空格),第二个字符串中该位置的字符。遍历该列表,您可以精确构建您想要创建的输出。
在docs中没有提及difflib以任何方式过时或弃用。