使用纯Python cod去除生成的HTML中的空白

2024-05-15 11:12:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不想依赖于库/外部可执行文件,比如tidy。

为了进一步澄清,实际上没有JavaScript代码。只有HTML内容。


Tags: 文件工具代码com可执行文件jinja2内容源代码
3条回答

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

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

您还可以研究Jinja's built-in whitespace control,这可能会减少在呈现模板后手动删除空白的需要。

引用the docs

But you can also strip whitespace in templates by hand. If you put an minus sign (-) to the start or end of an block (for example a for tag), a comment or variable expression you can remove the whitespaces after or before that block:

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

This will yield all elements without whitespace between them. If seq was a list of numbers from 1 to 9 the output would be 123456789.

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

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

或:

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

如果你想做一些比去掉多余的空白更复杂的事情,你需要使用更强大的工具(或者更复杂的regexp)。

相关问题 更多 >