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

发布于 2024-08-19 03:02:58 字数 246 浏览 6 评论 0原文

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

我不想依赖库/外部可执行文件,例如 tidy为了这。

需要进一步说明的是,实际上没有 JavaScript 代码。仅 HTML 内容。

I am using Jinja2 to generate HTML files which are typically very huge in size. I noticed that the generated HTML had a lot of whitespace. Is there a pure-Python tool that I can use to minimize this HTML? When I say "minimize", I mean remove unnecessary whitespace from the HTML (much like Google does -- look at the source for google.com, for instance)

I don't want to rely on libraries/external-executables such as tidy for this.

For further clarification, there is virtually no JavaScript code. Only HTML content.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

复古式 2024-08-26 03:02:58

您还可以研究 Jinja 的内置空白控件,这可能会缓解一些问题渲染模板后需要手动删除空格。

引用文档

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

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

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

You might also investigate Jinja's built-in whitespace control, which might alleviate some of the need for manually removing whitespace after your templates have been rendered.

Quoting 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.

凯凯我们等你回来 2024-08-26 03:02:58

我发现 python slimmer 库非常适合您需要做的事情。

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

I found python slimmer library, perfect for what you need to do.

from slimmer import html_slimmer # or xhtml_slimmer, css_slimmer
html = html_slimmer(html)
噩梦成真你也成魔 2024-08-26 03:02:58

如果您只想删除多余的空格,您可以使用:

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

或:

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

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

If you just want to get rid of excess whitespace, you can use:

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

or:

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

If you want to do something more complicated than just stripping excess whitespace, you'll need to use more powerful tools (or more complex regexps).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文