我已經下載並提取完整的維基百科的XML轉儲(60+ GB,單獨的XML文件)'enwiki-20170820-pages-articles-multistream.xml.bz2提取從維基百科的XML所選文章的特定字符串轉儲
我感興趣的標題和正文來自每一頁。
我需要能夠查找每個文本中的特定字符串,僅針對所選標題。
問題:
1)如何有效地清潔XML文件?我想刪除除文本和標題字段以外的任何不相關的內容。
一個頁的一個例子可以是:
<page>
<title>Afrika</title>
<ns>0</ns>
<id>2</id>
<revision>
<id>1428708</id>
<parentid>1391377</parentid>
<timestamp>2016-03-06T14:00:12Z</timestamp>
<contributor>
<username>SpesBona</username>
<id>2720</id>
</contributor>
<comment>Uitgebrei</comment>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve">
'''Afrika''' is die wêreld se tweede grootste [[kontinent]] in sowel
oppervlakte as bevolking. Saam met die eilande beslaan dit ongeveer
30,221,532km² wat 20,3% van die totale landoppervlakte van die [[aarde]]
is en dit word bewoon deur meer as 1 miljard mense - ongeveer 'n sewende
van die wêreldbevolking.
</text>
</revision>
優選地,我需要的唯一信息是:
<page>
<title>Afrika</title>
<text xml:space="preserve">
'''Afrika''' is die wêreld se tweede grootste [[kontinent]] in sowel
oppervlakte as bevolking. Saam met die eilande beslaan dit ongeveer
30,221,532km² wat 20,3% van die totale landoppervlakte van die [[aarde]]
is en dit word bewoon deur meer as 1 miljard mense - ongeveer 'n sewende
van die wêreldbevolking.
</text>
</page>
然而;我從來沒有使用XML或做過任何XML解析,所以我有點迷失在如何用這麼大的文件做到這一點。
我試過使用正則表達式,但我想知道是否有任何方式在Python中使用它們的任何XML處理模塊來做到這一點?
2)當必須搜索如此龐大的文本文件時,最佳的數據結構是什麼?建議用完整的清理數據創建一個新文件,或者使用MongoDB等數據庫進行查找?
正則表達式是解析XML的錯誤工具。使用XPath導航XML的各個部分(然後在您到達目標文本後可能返回正則表達式)。如果您真正想要根據源XML文件生成另一個XML文件,請使用XSLT。用什麼來存儲文本是一個設計問題,要回答將需要你陳述更多的約束和目標。然而,即使有這樣的闡述,你的問題仍然是**這個網站太寬泛**。 – kjhughes