Jinja2模板,去掉回车return
Jinja2 templates, remove the carriage return
我使用 Jinja2 模板进行大量网络设备配置,但现在我需要制作一行特定的名称以用于报告目的。
我使用的一个Jinja2脚本如下
{% for name in names -%}
{{name}} OR
{% endfor -%}
它给了我
name1 OR
name2 OR
name3 OR
我在文本中让它看起来像我需要的是“name1 OR name2 OR name3 OR”然后是“name1 OR name2 OR name3”
我正在尝试研究创建一个 Jinja2,它将使我接近或达到我需要的最终格式。
谁能帮我解决这个问题,将不胜感激。
您可以使用loop.last
来防止在最后一次迭代中输出或,并使用-
来删除回车returns。
{% for name in names -%}
{{name}}{{ " OR " if not loop.last else "" -}}
{% endfor -%}
您需要使用 {%-
作为开始标记,以便删除前一个表达式的空格:
from jinja2 import Template
template = '''
{% for name in names -%}
{{name}} OR
{%- endfor -%}
'''
print (Template(template).render(names=['a', 'b', 'c']))
下面的 returns,这可能不是您真正想要的。:)
<newline>
a ORb ORc OR
因此,为了获得想要的结果,模板至少有以下两个选项:
{{ names | join(' OR ') }}
或更短的变体:
{{ " OR ".join(names) }}
我使用 Jinja2 模板进行大量网络设备配置,但现在我需要制作一行特定的名称以用于报告目的。
我使用的一个Jinja2脚本如下
{% for name in names -%}
{{name}} OR
{% endfor -%}
它给了我
name1 OR
name2 OR
name3 OR
我在文本中让它看起来像我需要的是“name1 OR name2 OR name3 OR”然后是“name1 OR name2 OR name3”
我正在尝试研究创建一个 Jinja2,它将使我接近或达到我需要的最终格式。
谁能帮我解决这个问题,将不胜感激。
您可以使用loop.last
来防止在最后一次迭代中输出或,并使用-
来删除回车returns。
{% for name in names -%}
{{name}}{{ " OR " if not loop.last else "" -}}
{% endfor -%}
您需要使用 {%-
作为开始标记,以便删除前一个表达式的空格:
from jinja2 import Template
template = '''
{% for name in names -%}
{{name}} OR
{%- endfor -%}
'''
print (Template(template).render(names=['a', 'b', 'c']))
下面的 returns,这可能不是您真正想要的。:)
<newline>
a ORb ORc OR
因此,为了获得想要的结果,模板至少有以下两个选项:
{{ names | join(' OR ') }}
或更短的变体:
{{ " OR ".join(names) }}