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

1 投票
2 回答
549 浏览
提问于 2025-04-17 20:49

我现在的目标是把一段代码的输出结果当作数据来生成一个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')

撰写回答