我有這樣一個簡單的xml檔案:
<BSB>
<APPLSUMMARY>/span>
< MAIN W="S1" X="{ND}"/>
< COUNTS Z="0"/span> AB="0" BB="0" CB="0" FB="0" GB="{nd}"/>
<SCOTDEBT OQB="{ND}"/span>/>
< NOTICES HB="0" IB="3"/>
< SUB_BLOCKS C="3"/span> D="3"/span> E="1"/span> F="0"/span>/>
< ALIAS_NO UPB="0"/span> VPB="{ND}" WPB="0"/span>/>
< ASSOC_NO DD="0" ED="0"/span> AC="0"/span>/>
< ALERTSUMM PB="0" QB="0" RB="{ND}" SB="{ND}" TB="{ND}"/span> UB="{ND}"/>
< HOSUMM BC="{ND}" RGB="{ND}"/>
< TPD INB="{ND}"/span> JNB="{ND}" KNB="{ND}" LNB="{ND}"/>
<OCCUPANCY AD="1"/>
< DECEASED LQB="1" FCC="{ND}" GCC="{ND}" HCC="{ND}"/span> ICC="{ND}"/span>/>
<IMPAIRED MQB="0"/>
< 活動 JCC="{ND}" KCC="{ND}"/span> LCC="{ND}"/span>/>
< ADVERSE MCC="{ND}" HHC="{ND}"/>
</APPLSUMMARY>
</BSB>/span>
我想在python中創建一個csv檔案,其中只包含DECEASED的內容,列數如下:
因此,我試圖獲得DECEASED位的值,并將它們排列在列中。
我試過這樣做:
import xml.etree.ElementTree as ET
import io
parsed = objectify.parse(open(path)) // path是where the xml file is saved
root = parsed.getroot()
data = []/span>
for elt in root.BSB.DECEASED:
el_data = {}
for child in elt.getchildren()。
el_data[child.tag] = child.text
data.append(el_data)。
perf =pd.DataFrame(data) 。 drop_duplicates(subset=None, keep='first', inplace=False)
print(perf)
perf.to_csv('DECESEAD.csv')
我得到一個空的資料集:
空的資料集(Empty DataFrame 列。[] 索引。[]誰能幫助我獲得DECEASED標簽內的值,請?
uj5u.com熱心網友回復:
下面的代碼收集了你要找的資料
import xml.etree.ElementTree as ET
從typing中匯入Dict
xml = '''<BSB>
<APPLSUMMARY>/span>
< MAIN W="S1" X="{ND}"/>
< COUNTS Z="0"/span> AB="0" BB="0" CB="0" FB="0" GB="{nd}"/>
<SCOTDEBT OQB="{ND}"/span>/>
< NOTICES HB="0" IB="3"/>
< SUB_BLOCKS C="3"/span> D="3"/span> E="1"/span> F="0"/span>/>
< ALIAS_NO UPB="0"/span> VPB="{ND}" WPB="0"/span>/>
< ASSOC_NO DD="0" ED="0"/span> AC="0"/span>/>
< ALERTSUMM PB="0" QB="0" RB="{ND}" SB="{ND}" TB="{ND}"/span> UB="{ND}"/>
< HOSUMM BC="{ND}" RGB="{ND}"/>
< TPD INB="{ND}"/span> JNB="{ND}" KNB="{ND}" LNB="{ND}"/>
<OCCUPANCY AD="1"/>
< DECEASED LQB="1" FCC="{ND}" GCC="{ND}" HCC="{ND}"/span> ICC="{ND}"/span>/>
<IMPAIRED MQB="0"/>
< 活動 JCC="{ND}" KCC="{ND}"/span> LCC="{ND}"/span>/>
< ADVERSE MCC="{ND}" HHC="{ND}"/>
</APPLSUMMARY>
</BSB>' ''
def _clean_dict(attribute: Dict) -> Dict:
結果={}。
for k, v in attributes.items():
如果v[0] == '{':
val = v[1:-1]
否則。
val = v
結果[k] = val
回傳結果
資料 = []
root = ET.fromstring(xml)
for d in root.findall('.//DECEASED'):
data.append(_clean_dict(d.attrib))
print(data)
輸出(dict的串列)
[{'LQB': '1', 'FCC': 'ND', 'GCC': 'ND', 'HCC' 。 'ND', 'ICC': 'ND'}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/332984.html
標籤:
