Python 字符串格式 : For loops?

标签 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 是否具有某种我应该关注的 native 、轻量级字符串循环格式化功能。

编辑:此外,如果 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)) 

您可以使 inputs/outputs 创建步骤成为一个函数,或者使用 json 中的内容用于 pretty-print 的库。

关于Python 字符串格式 : For loops?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392328/

相关文章:

Python Jinja2 宏空白问题

python - 如果与 Python 中的 Elif 相比,哪个更好?

python - Mesos - Zookeeper 错误;连接被拒绝

python - 如何检查鼠标是否在某个区域被点击(pygame)

c - 在C中获取具有动态长度的字符串的一部分

ansible - 如何让 Ansible 解释变量中的变量?

python - 我如何在 Keras 中故意过度拟合卷积神经网络以确保模型正常工作?

linux - 如果字符串有连字符,则记录器失败

Java Regex 在定界符和保留定界符之间拆分字符串

python - 如何从 Airflow 中的文件执行 SQL 查询? (PostgresQL 运算符)