使用纯Python代码在生成的HTML中删除空格

时间:2010-01-26 19:46:59

标签: python html whitespace strip jinja2

我使用Jinja2生成HTML文件,这些文件通常非常大。我注意到生成的HTML有很多空格。是否有一个纯Python工具,我可以用来最小化这个HTML?当我说“最小化”时,我的意思是从HTML中删除不必要的空格(就像Google一样 - 例如,查看google.com的来源)

我不想依赖库/外部可执行文件,例如整理。

为了进一步说明,几乎没有JavaScript代码。只有HTML内容。

3 个答案:

答案 0 :(得分:9)

您还可以调查Jinja's built-in whitespace control,这可能会减少在渲染模板后手动删除空格的一些需求。

引用the docs

  

但您也可以手动剥离模板中的空白。如果在块的开头或结尾添加减号( - )(例如for for tag),则可以在该块之后或之前删除注释或变量表达式:

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

这将产生所有元素,它们之间没有空格。如果seq是1到9之间的数字列表,则输出将为123456789。

答案 1 :(得分:4)

我找到了python slimmer库,非常适合您需要做的事情。

from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
html = html_slimmer(html)

答案 2 :(得分:1)

如果您只是想摆脱多余的空白,可以使用:

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

或:

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

如果你想做一些比剥离多余空格更复杂的事情,你需要使用更强大的工具(或更复杂的正则表达式)。