如何将代码输出插入xml标签占位符中(python)
我现在的目标是把一段代码的输出结果当作数据来生成一个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>
你可以看到,在构建xml的时候,它没有把变量'x'的输出结果当作输入,而是直接用了字母x(字符串)。
有没有什么建议可以让我把'x'的输出结果放到年龄的占位符里?提前谢谢大家。
2 个回答
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)
),因为你现在用的老式方法有点不常见,但只要你修正了那些小错误,它也是完全有效的,运行得很好……
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')