在Python中将XML转换为DF

时间:2019-01-04 11:24:27

标签: python xml dataframe

我正在打开一个大型xml文件,使用以下代码可以得到一些结果:

import os
import xml.etree.ElementTree as et
base_path=os.path.dirname(os.path.realpath(__file__))

xml_file=os.path.join(base_path,'my xml path file')
tree=et.parse(xml_file)
root=tree.getroot()

for child in root:
    for element in child:
        print (element.tag,':',element.text)
        for one in element:
            print(one.tag,':',one.text)

结果示例:

code_one : a
value_one : blue
default: 3

code_one : a
value_one : black
default: 12

code_one : b
value_one : green
default: 4

Rte:
Rte:

到目前为止,一切都很好,但我想将我要打印的输出保存到数据框中,或者如果这将是一个问题,保存到文件中,然后我将打开此文件并另存为DF。 / p>

我需要将输出转换为如下所示:

code_one, value_one, default
a, blue, 3       
a, black, 12
b, green, 4

多谢建议

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

header = ["code_one", "value_one", "default"]
vals =[]
for child in root:
    for element in child:
        if header == [element.tag] + [x.tag for x in element]:
            vals.append([element.text] + [x.text for x in element]
print(", ".join(header))
for v in vals:
    print(", ".join(v))

由于您未提供示例文件,因此我无法验证上述代码是否有效,但是应该可以。这有帮助吗?

答案 1 :(得分:0)

这解决了我的问题: 我已经将输出写入文件,然后在数据框中使用熊猫打开了文件 这是保存输出的方法:

f=open('file.txt','w')
for child in root:
    for element in child:
        f.write(str(element.tag)+':'+str(element.text))
        for one in element:
            f.write(str(one.tag)+':'+str(one.text))
f.close()