我正在打开一个大型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
多谢建议
答案 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()