代码之家  ›  专栏  ›  技术社区  ›  Sridhar Ratnakumar

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

  •  9
  • Sridhar Ratnakumar  · 技术社区  · 16 年前

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

    我不想依赖库/外部可执行文件(如tidy)来完成此操作。

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

    3 回复  |  直到 13 年前
        1
  •  1
  •   Edward Loper    16 年前

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

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

    或:

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

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

        2
  •  9
  •   Will McCutchen    16 年前

    你也可以调查 Jinja's built-in whitespace control 这可能减轻了在呈现模板后手动删除空白的一些需要。

    引用 the docs :

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

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

    这将生成所有元素,它们之间没有空白。如果seq是从1到9的数字列表,那么输出将是123456789。

        3
  •  4
  •   Pykler    13 年前

    我发现 python slimmer 图书馆,非常适合你需要做的事情。

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