我正在使用 Jinja2 生成通常非常大的 HTML 文件。我注意到生成的 HTML 有很多空格。有没有可以用来最小化这个 HTML 的纯 Python 工具?当我说“最小化”时,我的意思是从 HTML 中删除不必要的空格(就像 Google 所做的那样——例如,查看 google.com 的源代码)
我不想为此依赖诸如 tidy 之类的库/外部可执行文件。
为了进一步说明,实际上没有 JavaScript 代码。仅 HTML 内容。
我正在使用 Jinja2 生成通常非常大的 HTML 文件。我注意到生成的 HTML 有很多空格。有没有可以用来最小化这个 HTML 的纯 Python 工具?当我说“最小化”时,我的意思是从 HTML 中删除不必要的空格(就像 Google 所做的那样——例如,查看 google.com 的源代码)
我不想为此依赖诸如 tidy 之类的库/外部可执行文件。
为了进一步说明,实际上没有 JavaScript 代码。仅 HTML 内容。
您还可以研究Jinja 的内置空格控件,这可能会减轻在渲染模板后手动删除空格的一些需要。
引用文档:
但是您也可以手动去除模板中的空白。如果将减号 (-) 放在块的开头或结尾(例如 for 标记)、注释或变量表达式,您可以删除该块之后或之前的空格:
{% for item in seq -%}
{{ item }}
{%- endfor %}
这将产生所有元素之间没有空格。如果 seq 是从 1 到 9 的数字列表,则输出将为 123456789。
我找到了python slimmer库,非常适合您需要做的事情。
from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
html = html_slimmer(html)
如果您只想摆脱多余的空格,可以使用:
>>> import re
>>> html_string = re.sub(r'\s\s+', ' ', html_string)
或者:
>>> html_string = ' '.join(html_string.split())
如果你想做一些比去除多余空格更复杂的事情,你需要使用更强大的工具(或更复杂的正则表达式)。