0

我正在做一个需要将 csv 转换为 XML 的项目。我的以下代码工作正常,但结果不是我想要的,我想知道是否有人能指出我缺少哪种方法。

所以我的 csv pandas 数据框看起来很像:

  a b c d
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6

和代码:

xmlroot = lxml.etree.Element("root")
for row in df.to_dict(orient='records'):
    current = lxml.etree.Element('project')
    xmlroot.append(current)
    for col, value in row.items():
        current.set(col, value)
with open('final.xml', 'wb') as filepath:
    filepath.write(lxml.etree.tostring(xmlroot, pretty_print=True))

输出是:

<root>
  <project a=1 b=2 c=3 d=4/>
</root>

但我想要的东西看起来像:

<root>
  <project>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <d>4</d>
  </project>
</root>

任何帮助,将不胜感激!

4

1 回答 1

1

使用to_xml

df.to_xml('final.xml', index=False, root_name='root', row_name='project')

输出:

>>> %cat 'final.xml'
<?xml version='1.0' encoding='utf-8'?>
<root>
  <project>
    <a>1</a>
    <b>2</b>
    <c>3</c>
    <d>4</d>
  </project>
  <project>
    <a>2</a>
    <b>3</b>
    <c>4</c>
    <d>5</d>
  </project>
  <project>
    <a>3</a>
    <b>4</b>
    <c>5</c>
    <d>6</d>
  </project>
</root>
于 2021-09-30T05:23:51.600 回答