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

Rei*_*ica 9 html python whitespace strip jinja2

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

我不想依赖库/外部可执行文件,例如tidy.

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

Wil*_*hen 9

您还可以调查Jinja的内置空白控件,这可以减轻在渲染模板后手动删除空格的一些需求.

引用文档:

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

{% for item in seq -%}
    {{ item }}
{%- endfor %}
Run Code Online (Sandbox Code Playgroud)

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


Edw*_*per -1

如果你只是想去掉多余的空格,你可以使用:

>>> import re
>>> html_string = re.sub(r'\s\s+', ' ', html_string)
Run Code Online (Sandbox Code Playgroud)

或者:

>>> html_string = ' '.join(html_string.split())
Run Code Online (Sandbox Code Playgroud)

如果您想做的事情比仅仅去除多余的空格更复杂,则需要使用更强大的工具(或更复杂的正则表达式)。

  • 通过这种方式,您还可以去除文本中单词之间的空格,例如段落和标签属性中的空格,并使 HTML 无效 (4认同)
  • 它还破坏了 <pre> 元素的内容。 (2认同)