Pregunta

Necesito resaltar las diferencias entre dos cadenas simples con python, encerrando las diferentes subcadenas en un atributo de intervalo HTML.Así que estoy buscando una forma sencilla de implementar la función ilustrada en el siguiente ejemplo:

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

... debería devolver la cadena:

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

Busqué en Google y vi que se mencionaba difflib, pero se supone que es obsoleto y no he encontrado ninguna demostración simple y buena.

¿Fue útil?

Solución

Todo lo que necesita proviene de difflib, por ejemplo:

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

Cada elemento de esa lista es un carácter de sus dos cadenas de entrada, con el prefijo de

  • " " (2 espacios), carácter presente en esa posición en ambas cadenas
  • "- " (espacio de guión), carácter presente en esa posición en la primera cadena
  • "+ " (más espacio), carácter presente en esa posición en la segunda cadena.

Repita esa lista y podrá generar exactamente el resultado que desea crear.

No se menciona que difflib esté obsoleto o en desuso en los documentos .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top