字符串中的多个文本替换标记

时间:2016-09-20 09:23:32

标签: python xml string python-2.7 replace

我有一个用作模板的xml文件。 我在这个xml中有多个标记,将被实际数据替换。这就是我所做的:

Storyboard

每个标记可以在模板内多次出现 我想知道是否有更有效的方法来做到这一点? 技术资料:

  • Python 2.7

1 个答案:

答案 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

更具可读性和效率(我猜测,但这是一个明智的猜测)。