我有一个用作模板的xml文件。
我在这个xml中有多个标记,将被实际数据替换。这就是我所做的:
Storyboard
每个标记可以在模板内多次出现 我想知道是否有更有效的方法来做到这一点? 技术资料:
答案 0 :(得分:1)
是。使用jinja2
模板模块。要使用现有模板,您可以执行以下操作:
def populate_template(self, value1, value2, value3):
from jinja2 import Template
t = Template(open('my_template.xml', 'r').read())
output = t.render(MARKER_1=value2, MARKER_2=value2, MARKER_3=value3)
return output
同样值得研究将参数传递给模板的不同方法也是值得的。例如,相同的代码可以写成......
...
context = {'MARKER_1': value1, 'MARKER_2', value2, 'MARKER_3': value3}
output = t.render(**context)
你可以将这个技巧与你碰巧躺在身边的任何陈旧的咒语一起使用。这是从选择性中提取可读信息的好方法。
jinja2的设计者,是同情Python原因的智能cookie,实际上通过允许你以任何可以创建dict的方式提供上下文来帮助你(关键字参数,{{1}的列表元组或字典 - 包括其他像字母一样的东西,如(key, value)
)。所以你也可以把第二行写成
collections.OrderedDict
更具可读性和效率(我猜测,但这是一个明智的猜测)。