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.

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top