我想生成代表XML文档的jinja2模板。 我列出了一堆可能的标签,最终模板如下所示:
from jinja2 import Template
template = Template("""
<root>
{%- tag1 %}<tag1>{{ tag1 }}</tag1>{% endif %}
{%- tag2 %}<tag2>{{ tag2 }}</tag2>{% endif %}
</root>
""")
template.render(**{'tag1':'value1'})
以上代码将生成下一个文档:
<root>
<tag1>value1</tag1>
</root>
现在,我有一个标签列表tags_for_template = [f'tag{i}' for in in range(N)]
,想要生成上面的模板。
最后,我希望生成器代码可读。
到目前为止,这是我最好的解决方案:
"\n".join(map(lambda x: "{%- if "+x+" %}<"+x+">{{ "+x+" }}</"+x+">{% endif %}",
tags_for_template))
您能提出一些更具可读性的建议吗?