Em python, produza HTML destacando as diferenças de duas strings simples
Pergunta
Preciso destacar as diferenças entre duas strings simples com python, envolvendo as substrings diferentes em um atributo span HTML.Portanto, estou procurando uma maneira simples de implementar a função ilustrada pelo seguinte exemplo:
hightlight_diff('Hello world','HeXXo world','red')
... ele deve retornar a string:
'He<span style="color:red">XX</span>o world'
Pesquisei no Google e vi o difflib ser mencionado, mas ele deveria estar obsoleto e não encontrei nenhuma demonstração simples boa.
Solução
Tudo o que você precisa sai do difflib - por exemplo:
>>> import difflib
>>> d = difflib.Differ()
>>> l = list(d.compare("hello", "heXXo"))
>>> l
[' h', ' e', '- l', '- l', '+ X', '+ X', ' o']
Cada elemento dessa lista é um caractere de suas duas strings de entrada, prefixado com um de
-
" "
(2 espaços), caractere presente nessa posição em ambas as strings -
"- "
(espaço com travessão), caractere presente nessa posição na primeira string -
"+ "
(mais espaço), caractere presente nessa posição na segunda string.
Repita essa lista e você pode construir exatamente a saída que deseja criar.
Não há menção de que o difflib está de alguma forma obsoleto ou obsoleto nos documentos .