我目前正在尝试将几千个xml文件转换为csv,这样我可以做一些更简单的数据工作。我试着先转换其中的一个,这样我就可以确保它工作,然后我就可以循环它
我在网上找到了一本漂亮的教程,我已经能够理解其中的大部分内容。我的XML文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<orbit id="14737">
<frame>
<time>2015-08-15T05:28:39.014</time>
<sza>113.48 deg</sza>
<alt>1552 km</alt>
<lat>-66.96 deg</lat>
<lon>196.11 deg</lon>
<x>-0.58 Rm</x>
<rho>1.33 Rm</rho>
<hperiod>0</hperiod>
<hperiodquality>0</hperiodquality>
<vperiod delaytime="167.443 μs">0</vperiod>
<vperiodquality>0</vperiodquality>
<cutoff>0</cutoff>
<ionospheretrace delaytime="167.443 μs"/>
<maxfreqquality>0</maxfreqquality>
<groundtrace delaytime="167.443 μs"/>
</frame>
...
当然,这种情况还在继续
我的问题出现在诸如ionospheretrace delaytime之类的行中,其中没有遵循XML文件的常规格式
我的phython代码如下所示:
import xml.etree.ElementTree as ET
import csv
tree = ET.parse("14737.xml")
root = tree.getroot()
# open a file for writing
Orbit_data = open('/csv/14737', 'w')
# create the csv writer object
csvwriter = csv.writer(Orbit_data)
orbit_head = []
orbit_head.append('time')
orbit_head.append('sza')
orbit_head.append('alt')
orbit_head.append('lat')
orbit_head.append('lon')
orbit_head.append('x')
orbit_head.append('rho')
orbit_head.append('hperiod')
orbit_head.append('hperiodquality')
orbit_head.append('vperiod')
orbit_head.append('vperiodquality')
orbit_head.append('cutoff')
orbit_head.append('ionospheretrace delaytime')
orbit_head.append('maxfreqquality')
orbit_head.append('groundtrace delatytime')
csvwriter.writerow(orbit_head)
for member in root.findall('frame'):
frame = []
address_list = []
time = member.find('time').text
frame.append(time)
sza = member.find('sza').text
resident.append(sza)
alt = member.find('alt').text
resident.append(alt)
lat = member.find('lat').text
frame.append(lat)
lon = member.find('lon').text
frame.append(lon)
x = member.find('x').text
frame.append(x)
rho = member.find('rho').text
frame.append(rho)
hperiod = member.find('hperiod').text
frame.append(hperiod)
hperiodquality = member.find('hperiodquality').text
frame.append(hperiodquality)
vperiod = member.find('vperiod').text
frame.append(vperiod)
vperiodquality = member.find('vperiodquality').text
frame.append(vperiodquality)
cutoff = member.find('cutoff').text
frame.append(cutoff)
ionospheretrace_delaytime = member.find('ionopspheretrace delaytime').text
frame.append(ionospheretrace_delaytime)
maxfreqquality = member.find('maxfreqquality').text
frame.append(maxfreqquality)
groundtrace_delatytime = member.find('groundtrace delatytime').text
frame.append(groundtrace_delatytime)
csvwriter.writerow(frame)
Orbit_data.close()
我希望我能以某种方式存储延迟时间,但我不确定
谢谢
以下是收集数据的一般方法
其思想是标记“特殊”标记(我们需要使用属性值的标记)
我跳过csv生成,因为您的主要挑战是如何从xml中提取数据
56116141.xml
输出
相关问题 更多 >
编程相关推荐