You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Jinja2移除标签生成的换行/空格,保留静态文本原格式

解决Jinja2模板保留静态文本格式的通用方案

问题描述

使用常规Jinja2条件模板时,{%- %}的空白修剪语法会误删X/Y内容的末尾换行、空格,尤其是当X/Y包含多行和末尾空行时,无法完全保留原始格式。需要一种通用模板结构,让标签与静态文本各占一行,无需随静态文本内容修改调整模板语法,确保:

  • flag=0时,A与B之间插入X,保留所有格式
  • flag=1时,A与B之间插入Y,保留所有格式(包括Y的末尾空行)
  • flag=2时,A与B直接相连,仅保留一个换行分隔

通用解决方案

使用精准的空白控制语法,仅修剪条件标签之间的冗余空白,完全保留静态文本的所有格式:

A
{%- if flag == "0" %}
X
{%- elif flag == "1" %}
Y
{% endif %}
B

方案说明

  1. {%- if ... %}与{%- elif ... %}中的{%-:修剪条件标签左侧的冗余空白,避免条件不匹配时A与B之间出现多余空行
  2. 不使用{%- endif %}:保留{% endif %}左侧的空白,确保X/Y的末尾换行(包括空行)完全保留
  3. 所有静态文本(A、B、X、Y)单独占行,无需调整格式即可直接插入模板,完全保留原始换行、空格

测试验证

以包含末尾空行的Y为例,模板如下:

a
{%- if flag == "0" %}
x
{%- elif flag == "1" %}
  y
 y

{% endif %}
b
  • flag=1时输出(保留Y的末尾空行):
    a
      y
     y
    
    b
    
  • flag=2时输出(A与B仅一个换行分隔):
    a
    b
    

内容的提问来源于stack exchange,提问作者flonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:02:02