Python 换行符和破折号在jinja中工作不正常

Python 换行符和破折号在jinja中工作不正常,python,python-2.7,yaml,jinja2,removing-whitespace,Python,Python 2.7,Yaml,Jinja2,Removing Whitespace,如何生成预期的输出?谢谢 金贾模板 输出 预期产量 代码 -删除Jinja标记的该侧和第一个字符之间的所有空白。您正在标记的“内部”使用-,因此将删除-字符和字符串之后的空白,将两者连接起来。移除其中一个 例如,您可以删除文本开头和结尾的额外换行符,并从开始标记的内侧删除-: {%- for field in fields %} - name: {{field}} type: string {%- endfor -%} 演示: 可以抑制以下线条的渲染: <% for ... %&

如何生成预期的输出?谢谢

金贾模板 输出 预期产量 代码
-
删除Jinja标记的该侧和第一个字符之间的所有空白。您正在标记的“内部”使用
-
,因此将删除
-
字符和
字符串之后的空白,将两者连接起来。移除其中一个

例如,您可以删除文本开头和结尾的额外换行符,并从开始标记的内侧删除
-

{%- for field in fields %}
-
  name: {{field}}
  type: string
{%- endfor -%}
演示:


可以抑制以下线条的渲染:

<% for ... %>
<% endfor %>
<% if ... %>
<% endif %>
将模板文件编辑为(直观的):


感谢您的解决方案仍然不适用于我,请检查它。另请参见:
-
  name: operating revenue
  type: string
-
  name: gross operating profit
  type: string
from jinja2 import Template

fields = ["operating revenue", "gross operating profit", "EBITDA", "operating profit after depreciation", "EBIT", "date"]
template_file = open('./fields_template.jinja2').read()
template = Template(template_file)
html_rendered = template.render(fields=fields)
print(html_rendered)
{%- for field in fields %}
-
  name: {{field}}
  type: string
{%- endfor -%}
>>> from jinja2 import Template
>>> fields = ["operating revenue", "gross operating profit", "EBITDA", "operating profit after depreciation", "EBIT", "date"]
>>> template_file = '''\
... {%- for field in fields %}
... -
...   name: {{field}}
...   type: string
... {%- endfor -%}
... '''
>>> template = Template(template_file)
>>> html_rendered = template.render(fields=fields)
>>> print(html_rendered)

-
  name: operating revenue
  type: string
-
  name: gross operating profit
  type: string
-
  name: EBITDA
  type: string
-
  name: operating profit after depreciation
  type: string
-
  name: EBIT
  type: string
-
  name: date
  type: string
<% for ... %>
<% endfor %>
<% if ... %>
<% endif %>
from jinja2 import Template

fields = ["operating revenue", "gross operating profit", "EBITDA", "operating profit after depreciation", "EBIT", "date"]
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True)

html_rendered = jinja_env.get_template('fields_template.jinja2').render(fields=fields)
print(html_rendered)
{% for field in fields %}
-
  name: {{field}}
  type: string
{% endfor %}