ダンプ私はタイトルとテキストに興味がダウンロードされ、完全なWikipediaの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解析を行ったこともありません。そのため、このような大きなファイルを使ってこれを行う方法が少し失われています。
正規表現を試してみましたが、XML処理モジュールを使用してPythonでこれを行う方法があるかどうかを知りたいのですが?
2)大量のテキストファイルを検索する際に最適なデータ構造は何でしょうか?クリーンなデータを使って新しいファイルを作成するか、ルックアップのためにMongoDBのようなデータベースを使用することをお勧めしますか?
正規表現は、XMLを解析するための間違ったツールです。 XPathを使用してXMLの部分をナビゲートします(ターゲットテキストに到達したら正規表現を使用します)。本当に必要なのは、ソースXMLファイルに基づいて別のXMLファイルを作成することです.XSLTを使用してください。テキストを保存するために使用するものは、設計上の問題です。答えには、より多くの制約と目標を記述する必要があります。しかし、このような精緻化を行っても、あなたの質問はこのサイトではまだ広すぎるでしょう**。 – kjhughes