然後就有強者說,「因為 XML 的結構比較多元,可以容納比較多資訊!」,確實有道理。換句話說,就是 XML 比較肥 ... 吧!
最近參加一個 Sentiment Analysis 的比賽,官方釋出的 dataset 也都是 XML。當然要使用一下 Python 這個後起之秀,想都沒想就套曾經用過的 xml.dom.minidom ,結果就跑好久......於是我就 Google 了「Python XML 效率」。
這才知道,原來這方法只適合比較小的 XML , > 1GB 的 XML 根本跑不動,所以就改用 lxml 啦!
假設要處理的是 test.xml
那用下面的範例的做abc efg hij
#-*- coding: utf8 -*- import io import lxml.etree as ET content = open('test.xml', 'r').read() contentBuffer = io.BytesIO(content) context = ET.iterparse(contentBuffer, tag='sentence') for event, element in context: print element.findtext('text').encode('utf8')
只要這樣做便能印出
abc efg hij
這個方法最大的好處就是,省時間,而且不會佔用太大的內存,處理大量資料的XML時很適合使用,如果想知道更多關於 lxml ,請至他們官網!
沒有留言:
張貼留言