为什么我的 XML 解析数据没有写入我的 CSV?
Why isn't my XML parsed data writing to my CSV?
我正在解析来自 xml 的所有数据,并尝试将其提供给 CSV。唯一的问题是所有这些都没有填充 CSV,我不确定为什么。我的数据打印正常,而且都在那里,所以我不确定为什么它不会写入我的 csv.. 任何帮助将不胜感激。我的 'Energy' 数据大约有 65,000 个值,但只有 2 个在填充我的 csv。请参阅我附上的 python 代码。
import xml.etree.ElementTree as ET
mytree = ET.parse('PupilMeasurement110.xml')
myroot = mytree.getroot()
import csv
import numpy as np
from matplotlib import cm
for data in myroot.findall('Results/Average2dData/elt'):
inte = data.find('Energy').text
# write data to csv
with open('mycsv3.csv', 'w', newline='') as f:
thewriter = csv.writer(f)
thewriter.writerow(['X', 'Y', 'Intensity'])
for row in data:
thewriter.writerow([inte])
我正在解析的 XML 的部分数据如下所示:
<Results>
<Average2dData>
<elt>
<Sigma>
<X>-1.1000000</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0913725</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0827451</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0741176</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0654902</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0568627</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0482353</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0396078</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0309804</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0223529</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0137255</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0050980</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
</Average2dData>
</Results>
如果您不为遇到的每个 <elt>
编写一个新的 CSV 文件...
pupil_measurement = ET.parse('PupilMeasurement110.xml')
results = pupil_measurement.getroot() # .getroot() will return the <Results> element
with open('mycsv3.csv', 'w', newline='') as f:
thewriter = csv.writer(f)
thewriter.writerow(['X', 'Y', 'Intensity'])
for elt in results.findall('Average2dData/elt'):
x = elt.find('Sigma/X').text
y = elt.find('Sigma/Y').text
inte = elt.find('Energy').text
thewriter.writerow([x, y, inte])
我正在解析来自 xml 的所有数据,并尝试将其提供给 CSV。唯一的问题是所有这些都没有填充 CSV,我不确定为什么。我的数据打印正常,而且都在那里,所以我不确定为什么它不会写入我的 csv.. 任何帮助将不胜感激。我的 'Energy' 数据大约有 65,000 个值,但只有 2 个在填充我的 csv。请参阅我附上的 python 代码。
import xml.etree.ElementTree as ET
mytree = ET.parse('PupilMeasurement110.xml')
myroot = mytree.getroot()
import csv
import numpy as np
from matplotlib import cm
for data in myroot.findall('Results/Average2dData/elt'):
inte = data.find('Energy').text
# write data to csv
with open('mycsv3.csv', 'w', newline='') as f:
thewriter = csv.writer(f)
thewriter.writerow(['X', 'Y', 'Intensity'])
for row in data:
thewriter.writerow([inte])
我正在解析的 XML 的部分数据如下所示:
<Results>
<Average2dData>
<elt>
<Sigma>
<X>-1.1000000</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0913725</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0827451</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0741176</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0654902</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0568627</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0482353</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0396078</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0309804</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0223529</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0137255</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
<elt>
<Sigma>
<X>-1.0050980</X>
<Y>-1.1000000</Y>
</Sigma>
<Energy>0.0000000</Energy>
</elt>
</Average2dData>
</Results>
如果您不为遇到的每个 <elt>
编写一个新的 CSV 文件...
pupil_measurement = ET.parse('PupilMeasurement110.xml')
results = pupil_measurement.getroot() # .getroot() will return the <Results> element
with open('mycsv3.csv', 'w', newline='') as f:
thewriter = csv.writer(f)
thewriter.writerow(['X', 'Y', 'Intensity'])
for elt in results.findall('Average2dData/elt'):
x = elt.find('Sigma/X').text
y = elt.find('Sigma/Y').text
inte = elt.find('Energy').text
thewriter.writerow([x, y, inte])