使用 python 将 XML 文件中的值替换为向量的值
Replace values in XML file with values of a vector using python
我有一个 XML 文件,我需要使用 Python 代码将 "type" 之后的值替换为向量 v=[7,8,9]
中的值。我需要代码来识别 "type" 这个词,然后在下一行中更改参数的值。值 2 应替换为 v[0]
,3 应替换为 v[1]
,依此类推。有没有办法用 ElementTree 或 readlines 做到这一点?
<Model>
<Function>
<param>x</param>
<param>type</param>
<param>2</param>
<param>5</param>
</Function>
<Function>
<param>y</param>
<param>type</param>
<param>3</param>
<param>2</param>
</Function>
<Function>
<param>z</param>
<param>type</param>
<param>7</param>
<param>9</param>
</Function>
</Model>
这样试试:
from lxml import etree
doc = etree.fromstring(model)
v = [7, 8, 9]
targets = doc.xpath('//Model/Function/param[.="type"]')
for target in targets:
chn = target.xpath('following-sibling::*[1]')[0]
chn.text = str(v.pop(0))
print(etree.tostring(doc).decode())
输出:
<Model>
<Function>
<param>x</param>
<param>type</param>
<param>7</param>
<param>5</param>
</Function>
<Function>
<param>y</param>
<param>type</param>
<param>8</param>
<param>2</param>
</Function>
<Function>
<param>z</param>
<param>type</param>
<param>9</param>
<param>9</param>
</Function>
</Model>
我有一个 XML 文件,我需要使用 Python 代码将 "type" 之后的值替换为向量 v=[7,8,9]
中的值。我需要代码来识别 "type" 这个词,然后在下一行中更改参数的值。值 2 应替换为 v[0]
,3 应替换为 v[1]
,依此类推。有没有办法用 ElementTree 或 readlines 做到这一点?
<Model>
<Function>
<param>x</param>
<param>type</param>
<param>2</param>
<param>5</param>
</Function>
<Function>
<param>y</param>
<param>type</param>
<param>3</param>
<param>2</param>
</Function>
<Function>
<param>z</param>
<param>type</param>
<param>7</param>
<param>9</param>
</Function>
</Model>
这样试试:
from lxml import etree
doc = etree.fromstring(model)
v = [7, 8, 9]
targets = doc.xpath('//Model/Function/param[.="type"]')
for target in targets:
chn = target.xpath('following-sibling::*[1]')[0]
chn.text = str(v.pop(0))
print(etree.tostring(doc).decode())
输出:
<Model>
<Function>
<param>x</param>
<param>type</param>
<param>7</param>
<param>5</param>
</Function>
<Function>
<param>y</param>
<param>type</param>
<param>8</param>
<param>2</param>
</Function>
<Function>
<param>z</param>
<param>type</param>
<param>9</param>
<param>9</param>
</Function>
</Model>