Python 字符串格式化:For 循环?

Rod*_*Day 6 python string jinja2

我真的很喜欢 Django/Jinja 风格的格式。我理解希望将逻辑和表示分开,但是在报告不断变化的数据量时,if 语句和 for 循环是理想的。

我正在创建一个“报告”类,它以更详细的方式返回有关函数输入和输出的一些信息,我想要的是一个字符串,如:

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

OUTPUTS:
{{% for key,value in outputsdict.items() %}}
  {{key}}: {{value}}
{{% endfor #}}
"""
Run Code Online (Sandbox Code Playgroud)

然后我可以称之为经典 template.format(**kwargs)

我想知道 Jinja 是否是我最好的选择,或者 python 是否具有某种我应该考虑的本机、轻量级字符串循环格式化功能。

编辑:此外,如果 Jinja 是我最好的选择,我将非常感谢如何在面向 Web 的环境之外使用它的示例。文档有点难以浏览。

Dro*_*ans 3

从 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)) 
Run Code Online (Sandbox Code Playgroud)

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