parser - Generar bastante dif html en Python
python 3 examples (6)
Dado que la biblioteca de google se ve que ya no tiene un desarrollo activo, sugiero usar diff_py
Desde la página de github:
La herramienta de diferencias simple que está escrita por Python. El resultado de diff se puede imprimir en la consola o en un archivo html.
Tengo dos porciones de texto que me gustaría comparar y ver qué palabras / líneas se agregaron / eliminaron / modificaron en Python (similar a la salida Diff de un Wiki).
He intentado difflib.HtmlDiff pero su salida es menos que bonita.
¿Hay alguna forma en Python (o biblioteca externa) que genere HTML de aspecto limpio de la diferencia de dos conjuntos de fragmentos de texto? (no solo nivel de línea, sino también modificaciones de palabra / carácter dentro de una línea)
En primer lugar, intente limpiar ambos códigos HTML por lxml.html, y verifique la diferencia por difflib
Hace poco publiqué un script en Python que hace esto: diff2HtmlCompare (siga el enlace para una captura de pantalla). Debajo del capó, envuelve difflib y usa piropos para resaltar la sintaxis.
Por lo general, si desea que se genere algo de HTML de una manera más bonita, hágalo agregando CSS.
Por ejemplo, si genera el HTML de esta manera:
import difflib
import sys
fromfile = "xxx"
tofile = "zzz"
fromlines = open(fromfile, ''U'').readlines()
tolines = open(tofile, ''U'').readlines()
diff = difflib.HtmlDiff().make_file(fromlines,tolines,fromfile,tofile)
sys.stdout.writelines(diff)
luego obtiene fondos verdes en las líneas agregadas, amarillo en las líneas cambiadas y rojo en las eliminadas. Si estuviera haciendo esto, tomaría el HTML generado, extraería el cuerpo y le pondría un prefijo con mi propio bloque manuscrito de HTML con un montón de CSS para que se vea bien. También es probable que elimine la tabla de leyenda y la mueva a la parte superior o la coloque en un div para que CSS pueda hacer eso.
En realidad, consideraría seriamente la posibilidad de corregir el módulo difflib (que está escrito en python) para generar un mejor HTML y contribuir de nuevo al proyecto. Si tiene un experto en CSS para que lo ayude o es usted mismo, considere hacerlo.
Una copia de mi propia respuesta desde here .
¿Qué pasa con DaisyDiff ( DaisyDiff DaisyDiff y PHP disponibles).
Las siguientes características son realmente agradables:
- Funciona con HTML mal formado que se puede encontrar "en la naturaleza".
- La diferencia está más especializada en HTML que en el árbol XML. Cambiar parte de un nodo de texto no hará que se cambie todo el nodo.
- Además de la diferencia visual predeterminada, la fuente HTML se puede diferenciar de forma coherente.
- Proporciona descripciones fáciles de entender de los cambios.
- La GUI predeterminada permite una fácil navegación de las modificaciones a través de atajos de teclado y enlaces.
Hay diff_prettyHtml()
en la biblioteca diff-match-patch de Google.