基于路径和存储在CSV中的文本值,高效更新XML文本内容

2024-04-26 20:39:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件(csv列表.csv)它包含我需要在第一列中更改的XML元素的路径。我需要将原始节点值更改为的文本在wards的2-10000列中给出。在

Path                                                            Edit1       Edit2       Edit3       Edit4       Edit5          ----  Edit1000
".//data/country[@name="Singapore"]/gdpnp[@month="08"]/state",  5.2e-015,   2e-05,      8e-06,      9e-04,      0.4e-05,   
".//data/country[@name="Peru"]/gdppc[@month="06"]/region",      0.04,       0.02,       0.15,       3.24,       0.98,                                                 

我想替换原始XML文件元素的文本(无编辑.xml),根据第1列中的路径,根据每个后续列中的值和相应的名称,例如基于第2列值的XML将命名为Edit2.XML。在

^{pr2}$

基于这个论坛的帮助,q1q2我已经得到了这一步@下面的代码。我得到了一个错误:

KeyError: '".//data/country[@name="'

当我给出一个固定的路径来删除这个错误时,我仍然得到findall上的错误,或者我没有得到正确的xml。在

我会很感激你的帮助。请随时建议其他方法来做这件事。谢谢


Tags: 文件csvname文本路径元素列表data
1条回答
网友
1楼 · 发布于 2024-04-26 20:39:51

首先,你应该提供一个可复制的例子,帮助其他用户帮助你。我为您做了一些工作,并创建了一个测试csv文件,如:

Path,                                             Edit1,       Edit2
".//first",  5.2e-015,   2e-05
".//second",      0.04,       0.02

请注意,我在标题中添加了逗号,因为您遗漏了它们,我不知道这是故意的还是键入错误。在

我还创建了一个小的xml文件:

^{pr2}$

以及脚本:

^{3}$

关键部分是旋转csv,这样我就可以同时处理所有要写入同一文件的数据。这样一来,第一列(xpath)将成为第一行,所以我将它们保存在一个变量中,该变量遍历其他行。在

运行方式如下:

python3 script.py csvfile xmlfile

它创建两个文件Edit1.xmlEdit2.xml,其内容如下:

==> Edit1.xml <==
<root>
    <first>5.2e-015</first>
    <second>0.04</second>
    <third>3</third>
</root>
==> Edit2.xml <==
<root>
    <first>2e-05</first>
    <second>0.02</second>
    <third>3</third>
</root>

我希望它能对你有所帮助,帮助你解决问题。在

相关问题 更多 >