Удалите пробелы в сгенерированном HTML, используя чистый код Python - PullRequest
9 голосов
/ 26 января 2010

Я использую Jinja2 для генерации HTML-файлов, которые обычно имеют очень большой размер. Я заметил, что сгенерированный HTML имеет много пробелов. Есть ли чистый инструмент Python, который я могу использовать, чтобы минимизировать этот HTML? Когда я говорю «свернуть», я имею в виду удаление ненужных пробелов из HTML (так же, как это делает Google - посмотрите на источник для google.com, например)

Я не хочу полагаться на библиотеки / внешние исполняемые файлы, такие как tidy, для этого.

Для дальнейшего разъяснения, код JavaScript практически отсутствует. Только HTML-контент.

Ответы [ 3 ]

9 голосов
/ 26 января 2010

Вы также можете исследовать Встроенный элемент управления пробелами Jinja , который может избавить от необходимости вручную удалять пробелы после визуализации шаблонов.

Цитирование Документы :

Но вы также можете удалить пробелы в шаблонах вручную. Если поставить знак минус (-) в начале или конце блока (например, тега for), комментарий или переменное выражение, вы можете удалить пробелы после или до этого блока:

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

Это даст все элементы без пробелов между ними. Если бы seq представлял собой список чисел от 1 до 9, результат был бы 123456789.

4 голосов
/ 01 июня 2013

Я нашел python slimmer библиотека, идеально подходящая для того, что вам нужно сделать.

from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
html = html_slimmer(html)
1 голос
/ 26 января 2010

Если вы просто хотите избавиться от лишних пробелов, вы можете использовать:

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

или

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

Если вы хотите сделать что-то более сложное, чем просто удалить лишние пробелы, вам нужно использовать более мощные инструменты (или более сложные регулярные выражения).

...