Streifen Sie die Whitespace in generiertem HTML mit einem reinen Python -Code
-
22-09-2019 - |
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.
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)