Frage

Ich verwende Jinja2, um HTML -Dateien zu generieren, die in der Regel sehr groß sind. Ich bemerkte, dass die erzeugte HTML viel Weißespace hatte. Gibt es ein reines Python-Tool, mit dem ich diese HTML minimieren kann? Wenn ich "minimieren" sage, meine ich unnötige Whitespace von der HTML (wie Google - schauen Sie sich beispielsweise die Quelle für Google.com an).

Ich möchte mich nicht auf Bibliotheken/externe Executables wie ordentlich verlassen.

Zur weiteren Klärung gibt es praktisch keinen JavaScript -Code. Nur HTML -Inhalte.

War es hilfreich?

Lösung

Wenn Sie nur überschüssige Whitespace loswerden möchten, können Sie verwenden:

>>> import re
>>> html_string = re.sub(r'\s\s+', ' ', html_string)

oder:

>>> html_string = ' '.join(html_string.split())

Wenn Sie etwas Komplizierteres tun möchten, als nur überschüssige Weißespace zu entfernen, müssen Sie leistungsfähigere Werkzeuge (oder komplexere Regexps) verwenden.

Andere Tipps

Sie können auch untersuchen Jinjas eingebaute Whitespace-Kontrolle, was einen Teil der Notwendigkeit lindern könnte, die Whitespace manuell zu entfernen, nachdem Ihre Vorlagen gerendert wurden.

Zitieren Die Dokumente:

Sie können aber auch Whitespace in Vorlagen von Hand ausziehen. Wenn Sie ein Minuszeichen (-) auf den Start oder Ende eines Blocks (zum Beispiel A für Tag) einstellen, können Sie die Whitespaces nach oder vor diesem Block entfernen:

{% for item in seq -%}
    {{ item }}
{%- endfor %}

Dies liefert alle Elemente ohne Weiß zwischen ihnen. Wenn SEQ eine Liste von Zahlen von 1 bis 9 wäre, wäre die Ausgabe 123456789.

ich fand Python schlanker Bibliothek, perfekt für das, was Sie tun müssen.

from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
html = html_slimmer(html)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top