我现在的目标是使用代码的输出作为构建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'的输出的任何建议?提前谢谢。
答案 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)
),就像您使用旧方法一样样式方法很不寻常,但完全有效,如果你修复这些拼写错误就行了......