Python字符串格式:用于循环?

Python字符串格式:用于循环?,python,string,jinja2,Python,String,Jinja2,我非常喜欢Django/Jinja格式风格。我理解想要保持逻辑和表示分离,但是当报告不断变化的数据量时,if语句和for循环是理想的 我正在创建一个“Report”类,该类以更详细的方式返回有关函数输入和输出的一些信息,我希望有一个字符串,如: template=""" INPUTS: {{% for key,value in inputsdict.items() %}} {{key}}: {{value}} {{% endfor #}} OUTPUTS: {{% for key,valu

我非常喜欢Django/Jinja格式风格。我理解想要保持逻辑和表示分离,但是当报告不断变化的数据量时,if语句和for循环是理想的

我正在创建一个“Report”类,该类以更详细的方式返回有关函数输入和输出的一些信息,我希望有一个字符串,如:

template="""
INPUTS:
{{% for key,value in inputsdict.items() %}}
  {{key}}: {{value}}
{{% endfor #}}

OUTPUTS:
{{% for key,value in outputsdict.items() %}}
  {{key}}: {{value}}
{{% endfor #}}
"""
然后我可以调用一个经典的
template.format(**kwargs)

我想知道Jinja是否是我做这件事的最佳选择,或者python是否有我应该关注的本地轻量级字符串循环格式化功能


编辑:另外,如果Jinja是我最好的选择,我非常希望能举一个例子,说明如何在面向web的环境之外使用它。这些文档很难导航。

从for循环生成数据,然后将它们放入结果中

没有必要过度使用格式模板系统。只要把它用在需要的地方

inputs  = ['%s: %s' % (k, v) for k, v in input_dict.items()]
outputs = ['%s: %s' % (k, v) for k, v in output_dict.items()]
print '\n'.join('INPUTS:',  '\n  '.join(inputs),
                '', 
                'OUTPUTS:', '\n  '.join(outputs)) 

您可以将
输入
/
输出
创建步骤设置为一个函数,或者使用库中的某些内容进行漂亮的打印。

您不能期望模板引擎(实际上是一种宏语言)仅通过一次替换就可以生成子模板。您可以使用
jinja2
或web环境之外的其他工具(事实上,它在该环境之外是完全可用的),只要给它一个合适的环境和上下文来工作,并取回您的新字符串……问题是,jinja的打包方式超出了我的需要,并且不一定遵守{|