【发布时间】:2021-03-03 11:58:17
【问题描述】:
我正在开发一个需要生成 xml 文件的项目。 我编写了一个代码来执行 xml,但我的输出遇到了问题。 我正在尝试遍历 csv 文件并将其转换为 xml
我的代码
import pandas as pd
from itertools import zip_longest
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element, SubElement, tostring
import xml.etree.ElementTree as etree
import os
df= pd.read_csv('detector.csv')
df.head()
df1= df['id'].astype(str)
df2=df['lane'].astype(str)
df3=df['pos'].astype(str)
df4=df['freq'].astype(str)
df5=df['file'].astype(str)
df_all= list(zip_longest(df1, df2, df3, df4, df5))
for i, j, k, l, m in df_all:
root=Element('additional')
tree=ElementTree(root)
child= SubElement(root, 'e1Detector')
child.set('id', i)
child.set('lane', j)
child.set('pos', k)
child.set('freq', l)
child.set('file', m)
print(etree.tostring(root))
tree.write('detector.add.xml')
我得到的只是 csv 文件的最后一行。
<additional>
<e1Detector id="e1Detector_77317_2_5" lane="77317_2" pos="1.51" freq="900.0" file="e1Detector_77317_2_5.xml" />
</additional>
我想要的是这个
<additional>
<e1Detector id="e1Detector_77305_1_1" lane="77305_1" pos="11.11" freq="900.0" file="e1Detector_77305_1_1.xml" />
<e1Detector id="e1Detector_77305_2_2" lane="77305_2" pos="11.11" freq="900.0" file="e1Detector_77305_2_2.xml" />
<e1Detector id="e1Detector_77317_0_3" lane="77317_0" pos="2.99" freq="900.0" file="e1Detector_77317_0_3.xml" />
<e1Detector id="e1Detector_77317_1_4" lane="77317_1" pos="2.06" freq="900.0" file="e1Detector_77317_1_4.xml" />
<e1Detector id="e1Detector_77317_2_5" lane="77317_2" pos="1.51" freq="900.0" file="e1Detector_77317_2_5.xml" />
</additional>
我尝试使用 append 但它不起作用
你可以找到我的csv文件here
【问题讨论】:
-
你的“tree.write”调用在循环内(!)
标签: python xml pandas dataframe csv