2013-06-30 226 views
1

我非常喜欢Django/Jinja风格的格式。我明白想要保持逻辑和表示分离,但if语句和for循环在报告不断变化的数据量时是理想的。Python字符串格式化:For循环?

我创建一个“报告”类返回有关更详细的方式输入和功能输出一些信息,我想是有这样的字符串:

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

+0

你不能指望一个模板引擎(实际上是一种宏语言)只需要通过一次替换即可实现。你可以在网络环境之外使用'jinja2'或者其他的东西(事实上它在这个环境之外是完全可用的),只要给它一个合适的环境和上下文来工作,并得到你的新字符串...... –

+0

事情是那个忍者以超过我需要的方式打包,并且不一定遵守{|常规Python的<20}样式格式。但是,我得到了一些东西。 – RodericDay

回答

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库的东西漂亮的印刷。