使用 xml.etree.ElementTree (簡稱ET) 來解析 xml 非常好用推薦給大家。按照我自己的了解,使用ET 解析xml 就像 周遊 字典一樣 ,以如下資料為例
<?xml version="1.0" encoding="utf-8"?>
<SMP2019-ECISA>
<Doc ID="4">
<Sentence ID="1" label="2">轉發了财新網的微網誌:【内鬼與大鳄姚剛張育軍的唏噓人生】(記者劉彩萍)近日,中國證券監督管理委員會原黨委委員、副主席姚剛和原黨委委員、主席助理張育軍被查。</Sentence>
<Sentence ID="2">兩位進階幹部先後被雙開并移交司法引發資本市場無限唏噓,曾經的後備幹部、創新先鋒倒在了利益面前。</Sentence>
<Sentence ID="3">内鬼與大鳄姚剛張育軍的唏噓人生??</Sentence>
<Sentence ID="4">原圖?</Sentence>
<Sentence ID="5">贊[21]?</Sentence>
<Sentence ID="6">原文轉發[29]?</Sentence>
<Sentence ID="7">原文評論[52]轉發理由:副主席,江湖上稱發審皇帝,IPO審批制的堅決擁護者。</Sentence>
<Sentence ID="8">攀附山西王成,讓一大批樂視這種垃圾公司上市,權?</Sentence>
<Sentence ID="9">貴牛的中樞。</Sentence>
<Sentence ID="10">人民牛,還缺一個市場化IPO,還多一個發審委。</Sentence>
</Doc>
</SMP2019-ECISA>
具體代碼如下
import xml.etree.ElementTree as ET
in_file = 'SMP2019_ECISA_Dev.xml'
tree = ET.parse(in_file)
# 獲得根節點 SMP2019-ECISA
root = tree.getroot()
# 周遊根節點
for doc in root:
# attrib 獲得 doc 的屬性
doc_attr = doc.attrib
print(doc_attr) # {'ID': '4'}
# 周遊doc 中的子元素
for sent in doc:
sent_attr = sent.attrib
print(sent_attr) # {'ID': '1', 'label': '2'}
# 獲得正文
text = sent.text
print(text) #轉發了财新網的微網誌:【内鬼與大鳄姚剛張育軍的唏噓人生】...
解析過程 非常簡單,主要是三個點
- 直接使用 in 一層一層 周遊
- element.attrib 獲得 對應元素的屬性
- element.text 獲得正文