如何在python3.5上使用ElementTree将csv文件转换为xml文件

2024-09-29 23:25:51 发布

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

我是Python新手,对这种语言没有太多经验。我有一个CSV文件,从中我必须将数据转换成XML结构。 我想用熊猫和ElementTree来做。你知道吗

我读了一个教程来这么做,但我不能理解代码的结构。你知道吗

CSV文件如下所示

test_name,health_feat,result
test_1,20,1
test_2,23,1
test_3,24,0
test_4,12,1
test_5,45,0
test_6,34,1
test_7,78,1
test_8,23,1
test_9,12,1
test_10,12,1

最后一个XML文件应该是这样的,但是我不确定在应用ElementTree时如何处理属性:

<xml version = '1.0' encoding = 'UTF-8'>
    <Test Testname = 'test_1' >
        <Health_Feat>20</health_feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_2'>
        <Health_Feat>23</Healt_Feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_3'>
        <Health_Feat>24</Healt_Feat>
        <Result>0</Result>
    </Test>
    <Test Testname = 'test_4'>
        <Health_Feat>30</Healt_Feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_5'>
        <Health_Feat>12</Healt_Feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_6'>
        <Health_Feat>45</Healt_Feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_7'>
        <Health_Feat>34</Healt_Feat>
        <Result>0</Result>
    </Test>
    <Test Testname = 'test_8'>
        <Health_Feat>78</Healt_Feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_9'>
        <Health_Feat>23</Healt_Feat>
        <Result>1</Result>
    </Test>
    <Test Testname = 'test_10'>
        <Health_Feat>12</Healt_Feat>
        <Result>1</Result>
    </Test>
</Tests>

目前,我尝试了这样的东西,但我不知道如何告诉程序,其中一行采取从csv。你知道吗

from lxml import etree as et
import uuid

df = pd.read_csv('mytests.csv', sep = ',')

root = et.Element(Tests)

for index, row in df.iterrows():
    if row['test_name'] == 'test_1':
        Test = et.SubElement(root, 'Test')
        Test.attrib['fileUID']
        health_feat = et.subElement('health_feat')
        Result = et.subElement('Result')
    else:
        Tests = et.subElement(root, 'Tests')

et.ElementTree(root).write('mytests.xml', pretty_print = True, xml_declaration = True, encoding = 'UTF-8', standalone = None)

Tags: 文件testtestsrootxmlresultethealth
1条回答
网友
1楼 · 发布于 2024-09-29 23:25:51

像这样:

import pandas as pd
df = pd.read_csv('your_csv.csv', sep=',')


def csv_to_xml(row):
    return """<Test Testname="%s">
    <Health_Feat>%s</Health_Feat>
    <Result>%s</Result>
    </Test>""" % (row.test_name, row.health_Feat, row.Result)

并在for循环中为csv的每一行调用函数

相关问题 更多 >

    热门问题