【发布时间】:2021-05-04 12:33:36
【问题描述】:
我有以下 xml 格式的数据。现在,我需要将标题“Expression Field 1”、“X Gender”、“Entrant Age”等中的数据提取到 csv 文件中。我已经编写了以下代码,但它不起作用。请帮忙。当我尝试以下代码时,我收到错误“'NoneType' object has no attribute 'tag''”
import xml.etree.ElementTree as Xet
import pandas as pd
cols = ["EXPRESSION_FIELD_1", "XGENDER", "ENTRANT-AGE", "CATEGORY2-NUM__SNZ", "XCATEGORY1", "RESULT-TIME-MILLISECONDS","FINA-POINTS__SNZ"]
rows = []
# Parsing the XML file
xmlparse = Xet.parse('sample.xml')
root = xmlparse.getroot()
for i in root:
name = i.find("EXPRESSION_FIELD_1").tag
gender = i.find("XGENDER").tag
age = i.find("ENTRANT-AGE").tag
category = i.find("CATEGORY2-NUM__SNZ").tag
result = i.find("XCATEGORY1").tag
rows.append({"name": name,
"gender": gender,
"age": age,
"category": category,
"result": result})
df = pd.DataFrame(rows, columns=cols)
# Writing dataframe to csv
df.to_csv('output.csv')
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TableData>
<Fields>
<Field align="" field="FRAGMENT_DISPLAY.SPLITS" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Expander" name="FRAGMENT_DISPLAY-SPLITS" showInExpander="true" sortable="true" source="tableColumn" type="string" width=""/>
<Field align="" field="EXPRESSION_FIELD_1" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Name " name="EXPRESSION_FIELD_1" showInExpander="false" sortable="false" source="tableColumn" type="string" width="130"/>
<Field align="" field="XGENDER" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Gender" name="XGENDER" showInExpander="false" sortable="true" source="tableColumn" type="string" width="50"/>
<Field align="" field="ENTRANT.AGE" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Age" name="ENTRANT-AGE" showInExpander="false" sortable="true" source="tableColumn" type="int" width="35"/>
<Field align="" field="CATEGORY2.NUM$$SNZ" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Distance" name="CATEGORY2-NUM__SNZ" showInExpander="false" sortable="true" source="tableColumn" type="int" width="70"/>
<Field align="" field="XCATEGORY1" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Stroke" name="XCATEGORY1" showInExpander="false" sortable="true" source="tableColumn" type="string" width="70"/>
<Field align="right" field="RESULT.TIME.MILLISECONDS" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Time " name="RESULT-TIME-MILLISECONDS" showInExpander="false" sortable="true" source="tableColumn" type="int" width="70"/>
<Field align="right" field="FINA.POINTS$$SNZ" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="FINA Points" name="FINA-POINTS__SNZ" showInExpander="false" sortable="true" source="tableColumn" type="string" width="85"/>
<Field align="right" field="FINA.YEAR$$SNZ" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Points Year" name="FINA-YEAR__SNZ" showInExpander="false" sortable="true" source="tableColumn" type="string" width="80"/>
<Field align="right" field="$DATE$COMP.DATE" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Date" name="_DATE_COMP-DATE" showInExpander="false" sortable="true" source="tableColumn" type="string" width="70"/>
<Field align="" field="XEVENT.CODE" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Meet" name="XEVENT-CODE" showInExpander="false" sortable="true" source="tableColumn" type="string" width="190"/>
<Field align="" field="PARAMETER1" hasEmailLink="false" hasHyperlink="false" hidden="false" id="" label="Course" name="PARAMETER1" showInExpander="false" sortable="true" source="tableColumn" type="string" width="50"/>
<Field field="MEMBER.FORE1" name="MEMBER-FORE1" type="string"/>
<Field field="MEMBER.SURNAME" name="MEMBER-SURNAME" type="string"/>
<Field field="XCATEGORY2" name="XCATEGORY2" type="string"/>
<Field field="TIME$$SNZ" name="TIME__SNZ" type="string"/>
</Fields>
<TotalRows>77910</TotalRows>
<StartRowIndex>21</StartRowIndex>
<EndRowIndex>41</EndRowIndex>
<RowCount>20</RowCount>
<Rows>
<Row>
<MEMBER-FORE1>Ieuan</MEMBER-FORE1>
<MEMBER-SURNAME>Edwards</MEMBER-SURNAME>
<XCATEGORY2>100 metre</XCATEGORY2>
<TIME__SNZ>1:30.23</TIME__SNZ>
<FRAGMENT_DISPLAY-SPLITS type="string"><!-- Start Fragment DISPLAY.SPLITS--><!-- Time Taken 16 Milliseconds--><apt_fragment_ms.comp.results_display.splits><div class="test-message" style="display:none">Public</div><!-- Start Display Process B:MS.CMS.BUILD.COMP.RESULTS.SPLITS,PUBLISHED,6--><!-- Time Taken 0 Milliseconds--><table border="1" ><tr><td>Split Distance</td><td style="width:50px" align="right">50</td><td style="width:50px" align="right">100</td></tr><tr><td>Cumulative</td><td align="right">42.53</td><td align="right">1:30.23</td></tr><tr><td>Individual</td><td align="right">42.53</td><td align="right">47.70</td></tr></table><br/><!-- End Display Process B:MS.CMS.BUILD.COMP.RESULTS.SPLITS,PUBLISHED,6--><div class="test-message" style="display:none"><div class="apt-form-item"><label>Staff Site</label><span class="output"></span></div><div class="apt-form-item"><label>Key</label><span class="output">004837*I*1319</span></div><div class="apt-form-item"><label>Stage</label><span class="output">P</span></div><div class="apt-form-item"><label>Heat</label><span class="output">1</span></div></div><style> /*<![CDATA[*/.fields table {border:0 none;}.splits td {background-color:pink;}/*]]>*/ </style></apt_fragment_ms.comp.results_display.splits><!-- End Fragment DISPLAY.SPLITS--></FRAGMENT_DISPLAY-SPLITS>
<EXPRESSION_FIELD_1>Ieuan Edwards</EXPRESSION_FIELD_1>
<XGENDER type="string">Male</XGENDER>
<ENTRANT-AGE type="int">18</ENTRANT-AGE>
<CATEGORY2-NUM__SNZ type="int">100 metre</CATEGORY2-NUM__SNZ>
<XCATEGORY1 type="string">Breaststroke</XCATEGORY1>
<RESULT-TIME-MILLISECONDS type="int">1:30.23</RESULT-TIME-MILLISECONDS>
<FINA-POINTS__SNZ type="string">250</FINA-POINTS__SNZ>
<FINA-YEAR__SNZ type="string">2021</FINA-YEAR__SNZ>
<_DATE_COMP-DATE type="string">10/04/2021</_DATE_COMP-DATE>
<XEVENT-CODE type="string">2021 Aon New Zealand Swimming Championships</XEVENT-CODE>
<PARAMETER1 type="string">L</PARAMETER1>
</Row>
<Row>
<MEMBER-FORE1>Sophie</MEMBER-FORE1>
<MEMBER-SURNAME>Irving</MEMBER-SURNAME>
<XCATEGORY2>50 metre</XCATEGORY2>
<TIME__SNZ>29.73</TIME__SNZ>
<FRAGMENT_DISPLAY-SPLITS type="string"><!-- Start Fragment DISPLAY.SPLITS--><!-- Time Taken 16 Milliseconds--><apt_fragment_ms.comp.results_display.splits><div class="test-message" style="display:none">Public</div><!-- Start Display Process B:MS.CMS.BUILD.COMP.RESULTS.SPLITS,PUBLISHED,6--><!-- Time Taken 0 Milliseconds--><table border="1" ><tr><td>Split Distance</td><td style="width:50px" align="right">50</td></tr><tr><td>Cumulative</td><td align="right">29.73</td></tr><tr><td>Individual</td><td align="right">29.73</td></tr></table><br/><!-- End Display Process B:MS.CMS.BUILD.COMP.RESULTS.SPLITS,PUBLISHED,6--><div class="test-message" style="display:none"><div class="apt-form-item"><label>Staff Site</label><span class="output"></span></div><div class="apt-form-item"><label>Key</label><span class="output">004837*I*131</span></div><div class="apt-form-item"><label>Stage</label><span class="output">P</span></div><div class="apt-form-item"><label>Heat</label><span class="output">2</span></div></div><style> /*<![CDATA[*/.fields table {border:0 none;}.splits td {background-color:pink;}/*]]>*/ </style></apt_fragment_ms.comp.results_display.splits><!-- End Fragment DISPLAY.SPLITS--></FRAGMENT_DISPLAY-SPLITS>
<EXPRESSION_FIELD_1>Sophie Irving</EXPRESSION_FIELD_1>
<XGENDER type="string">Female</XGENDER>
<ENTRANT-AGE type="int">18</ENTRANT-AGE>
<CATEGORY2-NUM__SNZ type="int">50 metre</CATEGORY2-NUM__SNZ>
<XCATEGORY1 type="string">Butterfly</XCATEGORY1>
<RESULT-TIME-MILLISECONDS type="int">29.73</RESULT-TIME-MILLISECONDS>
<FINA-POINTS__SNZ type="string">554</FINA-POINTS__SNZ>
<FINA-YEAR__SNZ type="string">2021</FINA-YEAR__SNZ>
<_DATE_COMP-DATE type="string">10/04/2021</_DATE_COMP-DATE>
<XEVENT-CODE type="string">2021 Aon New Zealand Swimming Championships</XEVENT-CODE>
<PARAMETER1 type="string">L</PARAMETER1>
</Row>
【问题讨论】: