Dans Python, produire du HTML mettant en évidence les différences de deux cordes simples

StackOverflow https://stackoverflow.com/questions/9396254

  •  29-10-2019
  •  | 
  •  

Question

J'ai besoin de mettre en évidence les différences entre deux chaînes simples avec Python, en entourant les sous-chaînes différentes dans un attribut HTML Span. Je cherche donc un moyen simple d'implémenter la fonction illustrée par l'exemple suivant:

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

... il doit renvoyer la chaîne:

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

J'ai googlé et vu DiffBlib mentionné, mais il est censé être obsolète et je n'ai trouvé aucune bonne démo simple.

Était-ce utile?

La solution

Tout ce dont vous avez besoin sort de diffib - par exemple:

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

Chaque élément de cette liste est un caractère de vos deux chaînes d'entrée, préfixé avec l'un des

  • " " (2 espaces), caractère présent à cette position dans les deux cordes
  • "- " (espace de tableau de bord), caractère présent à cette position dans la première chaîne
  • "+ " (plus de l'espace), caractère présent à cette position dans la deuxième chaîne.

Itérer dans cette liste et vous pouvez créer exactement la sortie que vous cherchez à créer.

Il n'y a aucune mention de diffib en aucune façon obsolète ou déprécié dans le docs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top