Domanda

Ho bisogno di evidenziare le differenze tra due semplici stringhe con python, racchiudendo le diverse sottostringhe in un attributo HTML span.Quindi sto cercando un modo semplice per implementare la funzione illustrata dal seguente esempio:

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

... dovrebbe restituire la stringa:

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

Ho cercato su Google e ho visto difflib menzionato, ma dovrebbe essere obsoleto e non ho trovato nessuna buona demo semplice.

È stato utile?

Soluzione

Tutto ciò di cui hai bisogno proviene da difflib, ad esempio:

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

Ogni elemento in quella lista è un carattere delle tue due stringhe di input, preceduto da uno di

  • " " (2 spazi), carattere presente in quella posizione in entrambe le stringhe
  • "- " (trattino spazio), carattere presente in quella posizione nella prima stringa
  • "+ " (più spazio), carattere presente in quella posizione nella seconda stringa.

Scorri l'elenco e puoi costruire esattamente l'output che stai cercando di creare.

Non si fa menzione del fatto che difflib sia in alcun modo obsoleto o deprecato nei documenti .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top