Générer assez diff html en Python
J'ai deux morceaux de texte que je voudrais comparer et de voir quels mots/lignes ont été ajoutées/supprimées/modifiées en Python (similaire à un Wiki Diff de Sortie).
J'ai essayé difflib.HtmlDiff mais il est de sortie est moins joli.
Est-il un moyen en Python (ou une bibliothèque externe), qui permettrait de générer propre à la recherche HTML de la diff de deux ensembles de morceaux de texte? (pas seulement au niveau de la ligne, mais aussi mot/caractère des modifications au sein d'une ligne)
Vous devez vous connecter pour publier un commentaire.
Il y a
diff_prettyHtml()
dans le diff-match-patch bibliothèque de Google.Généralement, si vous voulez un peu de HTML à afficher dans une jolie façon, vous le faites par l'ajout de CSS.
Par exemple, si vous générez le code HTML comme ceci:
puis vous obtenez des verts horizons sur les lignes ajoutées, jaune sur les lignes modifiées et rouge sur supprimés. Si je faisais ça, je prendrais prendre le code HTML généré, extraire le corps, et le préfixe avec ma propre écriture bloc de code HTML avec beaucoup de CSS pour faire bonne impression. Je voudrais aussi probablement de bande de la légende de la table et de le déplacer vers le haut ou le mettre dans une div de sorte que les CSS ne peut le faire.
En fait, je voudrais prendre sérieusement en considération seulement la fixation de la difflib module (qui est écrit en python) pour générer de meilleurs HTML et contribuent en retour au projet. Si vous avez un CSS expert pour vous aider ou vous-même, vous pouvez envisager cette.
J'ai récemment posté un script python qui fait juste cela: diff2HtmlCompare (suivez le lien pour une capture d'écran). Sous le capot, il s'enroule difflib et utilise pygments pour la coloration syntaxique.
essayez tout d'abord de nettoyer à la fois de HTML par lxml.html et le chèque de la différence par difflib
Une copie de ma propre réponse de ici.
Ce sujet DaisyDiff (Java et PHP des versions disponibles).
Fonctionnalités suivantes sont vraiment sympa:
Depuis la .. bibliothèque de google coutures ne pas avoir de développement active plus, je suggère l'utilisation de diff_py
À partir de la page github:
xmldiff semble être un joli paquet pour cette fin, en particulier lorsque vous avez XML/HTML pour comparer. Lire la suite dans leur la documentation.