如何将代码的输出插入到xml标记占位符(python)中

时间:2014-03-04 18:41:07

标签: python xml

我现在的目标是使用代码的输出作为构建xml的数据。这是一个例子:

from xml.etree.ElementTree import Element, SubElement, tostring
x=9**2.
xmlTemplate="""
<features>
    <name>%(name)s</name>
    <age>int(age)</age>
    <dob>%(dob)s</dob>
</features>"""
data={'name':'Michael', 'age':='x','dob':'20/10/1925'}

print xmlTemplate%data

<features>
    <name>Michael</name>
    <age>=x</age>
    <dob>20/10/1925</dob>
</features>

你可以看到,它不是使用变量'x'的输出作为xml构建中的输入,而是使用字母x(字符串)。

有关如何在年龄占位符中插入'x'的输出的任何建议?提前谢谢。

2 个答案:

答案 0 :(得分:1)

您应该使用str.format()功能,将{}放在您想要动态内容的位置。在您的示例中,它将是:

x=9**2

xmlTemplate="""
<features>
<name>{name}</name>
<age>{age}</age>
<dob>{dob}</dob>
</features>""".format(name='Michael', age=x, dob='20/10/1925')

答案 1 :(得分:1)

你有一些错别字....首先,%int(age)无效。你想要%(age)d。然后,在您的数据中,age:'x'(我认为?)引号为'x'。你只需要变量,所以它应该只是x。然后它看起来像这样:

x = 9**2

xmlTemplate="""
<features>
    <name>%(name)s</name>
    <age>%(age)d</age>
    <dob>%(dob)s</dob>
</features>"""
data={'name':'Michael', 'age':x,'dob':'20/10/1925'}

print xmlTemplate%data

另一个示例中的format方法也是一种很好的方法(如果您使用的话,也可以将其称为xmlTemplate.format(**data)),就像您使用旧方法一样样式方法很不寻常,但完全有效,如果你修复这些拼写错误就行了......