Python字符串格式:For循环?

时间:2013-06-30 16:13:34

标签: python string jinja2

我非常喜欢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是我最好的选择,我真的很感激如何在面向网络的环境之外使用它。文档很难导航。

1 个答案:

答案 0 :(得分:1)

从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)) 

您可以将inputs / outputs创建步骤作为一项功能,或者使用json库中的内容进行漂亮打印。