問題タブ [iterparse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1235 参照

python - つかむ tag with lxml's iterparse</h1> <div id="body"><p>I'm running into a problem with using lxml's <code>iterparse</code> on my HTML. I'm trying to get the <code><title></code>'s text but this simple </a> </h3> <div class="s-post-summary--content-excerpt"> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/dom" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">dom</a><a href="/tags/web-scraping" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">web-scraping</a><a href="/tags/lxml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">lxml</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-04-24T01:16:58.927</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="3 answers"> <span class="s-post-summary--stats-item-number">3</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="7041 views"> <span class="s-post-summary--stats-item-number">7041</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/10487062" class="s-link">python - lxml と iterparse を使用してサブ要素を取得する</a> </h3> <div class="s-post-summary--content-excerpt"> <p>XML ドキュメントから効率的にデータを取得するための解析アルゴリズムを作成しようとしています。現在、要素と子に基づいてドキュメントを読み進めていますが、代わりに iterparse を使用したいと考えています。1 つの問題は、見つかったときに子データをプルしたい要素のリストがあることですが、iterparse を使用すると、1 つの要素名に基づいてフィルター処理するか、すべての要素を取得するオプションがあるようです。</p> <p>XML の例:</p> <p>コード例:</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/parsing" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">parsing</a><a href="/tags/lxml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">lxml</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-05-07T18:21:42.127</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="2 answers"> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="1672 views"> <span class="s-post-summary--stats-item-number">1672</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/11216662" class="s-link">python - elementtree.ElementTree.iterparse が大量のメモリを使用するのはなぜですか?</a> </h3> <div class="s-post-summary--content-excerpt"> <p>大きな (371 MB) xml ファイルを解析するために elementtree.ElementTree.iterparse を使用しています。</p> <p>私のコードは基本的にこれです:</p> <p>私の質問は 2 つあります。</p> <p>最初 - A と B の両方が必要ですか (コード スニペットのコメントを参照)。root.clear() は不要な子をクリアするため、メモリが消費されないと言われましたが、ここに私の観察があります: A ではなく B を使用することは、メモリ消費の点でどちらも使用しないことと同じです (タスクマネージャーでプロット)。A のみを使用することは、両方を使用することと同じようです。</p> <p>2 番目 - なぜこれでもメモリを大量に消費するのでしょうか? プログラムが実行されると、最後に約 100 MB の RAM が使用されます。</p> <p>outfと関係があると思いますが、なぜですか?ディスクへの書き込みだけではありませんか?また、outf が閉じる前にそのデータを保存している場合、どうすればそれを回避できますか?</p> <p>その他の情報: Windows で Python 2.7.3 を使用しています。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml</a><a href="/tags/memory" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">memory</a><a href="/tags/elementtree" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">elementtree</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-06-26T22:09:49.003</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="1 answers"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="1113 views"> <span class="s-post-summary--stats-item-number">1113</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/11250934" class="s-link">python - ElementTree の iterparse にかかる時間はどれくらいですか?</a> </h3> <div class="s-post-summary--content-excerpt"> <p>別の質問に答える際に、誰かが次のチュートリアルを見せてくれました。著者は iterparse を使用して 3 秒以内に ~100 MB の XML ファイルを解析したと主張しています。</p> <p><a href="http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/" rel="nofollow">http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/</a></p> <p>~90 MB の XML ファイルを解析しようとしていますが、次のコードがあります。</p> <p>約30秒かかります...同様のサイズのファイル、同様のアルゴリズム、および同じパッケージを使用して読んだチュートリアルで報告されたものと同じ大きさではありません.</p> <p>誰かが私のコードの何が問題なのか、または私の状況とチュートリアルの違いに気付いていない可能性があることを教えてもらえますか?</p> <p>Python 2.7.3 を使用しています。</p> <p><strong>補遺:</strong></p> <p>誰かがそうかもしれないと思った場合に備えて、私はかなり強力なマシンも使用しています。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a><a href="/tags/celementtree" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">celementtree</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-06-28T18:41:27.383</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="4 answers"> <span class="s-post-summary--stats-item-number">4</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="7376 views"> <span class="s-post-summary--stats-item-number">7376</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/11400308" class="s-link">python - Pythonで巨大で正しくエンコードされていないXMLファイルを解析する</a> </h3> <div class="s-post-summary--content-excerpt"> <p>私は外部XMLファイルを解析するコードに取り組んできました。これらのファイルのいくつかは巨大で、最大ギガバイトのデータです。言うまでもなく、これらのファイルをメモリにロードするのは非常に非効率的であり、OutOfMemoryの問題を引き起こすことが多いため、これらのファイルをストリームとして解析する必要があります。</p> <p>私はライブラリminiDOM、ElementTree、cElementTreeを使用しており、現在lxmlを使用しています。現在、を使用して、動作する、かなりメモリ効率の高いスクリプトがあり<code>lxml.etree.iterparse</code>ます。問題は、解析する必要のあるXMLファイルの一部にエンコードエラーが含まれていることです(UTF-8としてアドバタイズされますが、エンコードが異なる文字が含まれています)。これを使用する場合、カスタムパーサーのオプションを<code>lxml.etree.parse</code>使用して修正できますが、カスタムパーサーは受け入れません。(参照:<a href="https://stackoverflow.com/questions/2352840/parsing-broken-xml-with-lxml-etree-iterparse">この質問</a>)<code>recover=True</code><code>iterparse</code><a href="https://stackoverflow.com/questions/2352840/parsing-broken-xml-with-lxml-etree-iterparse"></a></p> <p>私の現在のコードは次のようになります。</p> <p><code>iterparse</code>悪い文字(この場合は)に遭遇したときのエラー<code>^Y</code>:</p> <p>このデータをデコードしたくはありません。ドロップするだけです。ただし、要素をスキップする方法がわかりません。try /exceptステートメントを試してみました<code>context.next</code>。<code>continue</code></p> <p>どんな助けでもいただければ幸いです!</p> <p><strong>アップデート</strong></p> <p>いくつかの追加情報:これは、iterparseが失敗する行です:</p> <p><code><description><![CDATA:[musea de la photographie fonds mercator. Met meer dan 80.000 foto^Ys en 3 miljoen negatieven is het Muse de la...]]></description></code></p> <p>etreeによると、エラーはバイトで発生します<code>0x19 0x73 0x20 0x65</code>。<br> hexeditによると、<code>19 73 20 65</code>ASCIIに変換されます<code>.s e</code><br> 。<code>.</code>この場所にはアポストロフィ(写真)が必要です。</p> <p>私はまた、解決策を提供しない<a href="https://stackoverflow.com/questions/1325379/hexadecimal-0x19-is-an-invalid-character">この質問を見つけました。</a></p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml</a><a href="/tags/encoding" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">encoding</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-07-09T17:46:21.963</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="3 answers"> <span class="s-post-summary--stats-item-number">3</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="10837 views"> <span class="s-post-summary--stats-item-number">10837</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/12160418" class="s-link">python - lxml.etree.iterparse() がすべてのメモリを消費するのはなぜですか?</a> </h3> <div class="s-post-summary--content-excerpt"> <p>これにより、最終的に使用可能なメモリがすべて消費され、プロセスが強制終了されます。タグを「小さい」タグに変更しようとしました<code>schedule</code>が、違いはありませんでした。</p> <p>何が間違っているのですか / この大きなファイルを で処理するにはどうすればよい<code>iterparse()</code>ですか?</p> <p>私はそれを簡単に切り刻んで小さな塊に加工することができますが、それは私が望むよりも醜いです.</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml</a><a href="/tags/memory" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">memory</a><a href="/tags/lxml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">lxml</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-08-28T13:34:03.240</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="1 answers"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="964 views"> <span class="s-post-summary--stats-item-number">964</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/12332621" class="s-link">python - 名前空間の宣言に一貫性がないドキュメントでは、iterparseを使用し、その後xpathを使用します</a> </h3> <div class="s-post-summary--content-excerpt"> <p>おそらく大きなXMLファイルをカスタムPythonオブジェクトに解析するコードをまとめる必要があります。アイデアは大まかに次のとおりです。</p> <p>問題は、一部のドキュメントには名前空間宣言があり、一部には名前空間宣言がないことです。つまり、上記のコードでは、<code>tag='Foo'</code>と<code>xpath</code>パーツの両方が機能しません。</p> <p>今のところ私は醜いことに我慢してきました</p> <p>しかし、これはひどいので、うまく機能していても、正しく処理したいと思います。(私もそれが遅いはずだと思います。)</p> <p>を使用して両方のケースを説明する健全なコードを書く方法はあります<code>iterparse</code>か?今のところ、私はキャッチ<code>start-ns</code>と<code>end-ns</code>イベント、および「状態保持」変数の更新についてのみ考えることができます。これは、作業を行うためにループ内で呼び出される関数に渡す必要があります。次に、関数はそれ<code>xpath</code>に応じてクエリを作成します。これは理にかなっていますが、これを回避するもっと簡単な方法があるのではないかと思います。</p> <p>PS私は明らかに周りを検索しようとしましたが、名前空間の有無にかかわらず機能する解決策を見つけられませんでした。XMLから名前空間を削除するソリューションも受け入れますが、プロセスでツリー全体がRAMに格納されない場合に限ります。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml-parsing" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml-parsing</a><a href="/tags/lxml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">lxml</a><a href="/tags/xml-namespaces" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml-namespaces</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-09-08T16:46:52.653</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="1 answers"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="410 views"> <span class="s-post-summary--stats-item-number">410</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/12369852" class="s-link">python - 後続の .clear() のために、子の子を反復処理できませんか?</a> </h3> <div class="s-post-summary--content-excerpt"> <p>チュートリアルの<a href="http://lxml.de/tutorial.html#event-driven-parsing" rel="nofollow">「イベント駆動型解析」</a>セクションで説明されているパターンを使用しようとしています。<code>lxml</code></p> <p>私のコードでは、<code>iterchildren()</code>メソッドを使用して要素に対して再帰的に実行できる関数を呼び出しています。ここでは、例として 2 つのネストされたループを使用します。</p> <p>これは期待どおりに機能します。</p> <p>出力は<code><Element d at 0x2df49b0></code>です。</p> <p>しかし<code>.clear()</code>、最後に追加すると:</p> <p>-- 何も印刷されません。なぜそうなるのですか? また、これを回避するにはどうすればよいですか?</p> <p>ノート:</p> <ul> <li>スキップ<code>iterchildren</code>して、<code>for c in elem</code>またはを実行<code>for c in list(elem)</code>しても、同じ効果があります。</li> <li>メモリ使用量を低く抑えるには、反復アプローチを使用する必要があります。</li> <li><p>実際の使用例では、属性を使用して要素の検索を行っています。</p> /li> </ul> <p>内部要素が処理される前に消去する方法<code>clear</code>と、先祖の処理に必要な間、それらをメモリに保持する方法について説明してください。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml-parsing" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml-parsing</a><a href="/tags/lxml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">lxml</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-09-11T12:35:01.263</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="2 answers"> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="29608 views"> <span class="s-post-summary--stats-item-number">29608</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/12792998" class="s-link">python - ElementTree 反復解析戦略</a> </h3> <div class="s-post-summary--content-excerpt"> <p>十分な大きさ (最大 1GB) の xml ドキュメントを処理し、python で解析する必要があります。<a href="http://effbot.org/zone/element-iterparse.htm" rel="noreferrer">iterparse()</a>関数 (SAX スタイルの解析)を使用しています。</p> <p>私の懸念は次のとおりです。このようなxmlがあると想像してください</p> <p>もちろん、問題は、私がいつ姓を取得するのか (シンプソンズとして)、いつその家族の一員の名前を取得するのか (たとえば、ホーマー) を知ることです。</p> <p>私がこれまでやってきたことは、「メンバー」タグの中にいるかどうかを教えてくれる「スイッチ」を使用することです。コードは次のようになります</p> <p>そして、これは出力が</p> <p>私の懸念は、この(単純な)例では、どのタグ(on_members_tag)であるかを知るために追加の変数を作成する必要があったことです。処理する必要がある真のxmlの例を想像してみてください。それらには、より多くのネストされたタグがあります。</p> <p>また、これは非常に縮小された例であるため、より多くのタグ、より多くの内部タグを含む xml に直面し、さまざまなタグ名、属性などを取得しようとしている可能性があると想定できます。</p> <p>それで質問です。私はここでひどく愚かなことをしていますか?これにはもっとエレガントな解決策が必要だと思います。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml</a><a href="/tags/sax" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">sax</a><a href="/tags/elementtree" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">elementtree</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-10-09T04:51:47.420</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票する</span> </div> <div class="s-post-summary--stats-item " title="2 answers"> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">に答える</span> </div> <div class="s-post-summary--stats-item " title="2468 views"> <span class="s-post-summary--stats-item-number">2468</span> <span class="s-post-summary--stats-item-unit">参照</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/12882642" class="s-link">python - cElementTree.iterparse() 使用時にエラーが発生するノードをスキップする方法</a> </h3> <div class="s-post-summary--content-excerpt"> <p>非常に大きな XML ファイルを解析し、小文字を使用して句読点を削除しようとしています。問題は、for big files を使用してこのファイルを解析しようとすると<code>cET parse function</code>、ある時点で不適切な形式のタグまたは文字が発生すること<code>syntax error</code>です。</p> <p>注: ファイルを読み取ることはほぼ不可能なので、どこに問題があるのか​​わかりません。</p> <p>これをスキップまたは修正するにはどうすればよいですか?</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/python" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">python</a><a href="/tags/xml" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">xml</a><a href="/tags/iterparse" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">iterparse</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2012-10-14T13:22:21.477</span></time> </div> </div> </div> </div> </div> <br class="cbt"> <div class="s-pagination site1 themed pager float-left"> <a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=1" rel="" title="Go to page 2">1</a><a class="s-pagination--item js-pagination-item is-selected" href="/tags/iterparse?p=2" rel="" title="Go to page 2">2</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=3" rel="" title="Go to page 2">3</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=4" rel="" title="Go to page 2">4</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=5" rel="" title="Go to page 2">5</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=6" rel="" title="Go to page 2">6</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=7" rel="" title="Go to page 2">7</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=8" rel="" title="Go to page 2">8</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=9" rel="" title="Go to page 2">9</a><a class="s-pagination--item js-pagination-item " href="/tags/iterparse?p=10" rel="" title="Go to page 2">10</a></div> </div> <div id="sidebar" class="show-votes" role="complementary" aria-label="sidebar"> <div class="module js-gps-related-tags" id="related-tags"> <h4 id="h-related-tags">Reference</h4> <div data-name="javascript"> <a href="https://php.github.net.cn" class="post-tag no-tag-menu js-gps-track" >php</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1429865</span> </span> </div> <div data-name="javascript"> <a href="https://c-cpp.com" class="post-tag no-tag-menu js-gps-track" >c/c++</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">756500</span> </span> </div> <div data-name="javascript"> <a href="https://nginx.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">nginx</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49975</span> </span> </div> <div data-name="javascript"> <a href="https://mongodb.net.cn" class="post-tag no-tag-menu js-gps-track" >mongodb</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">159057</span> </span> </div> <div data-name="javascript"> <a href="https://mybatis.net.cn" class="post-tag no-tag-menu js-gps-track" >mybatis</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">3233</span> </span> </div> <div data-name="javascript"> <a href="https://anaconda.org.cn" class="post-tag no-tag-menu js-gps-track" >anaconda</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">13410</span> </span> </div> <div data-name="javascript"> <a href="https://pycharm.net.cn" class="post-tag no-tag-menu js-gps-track" >pycharm</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">14671</span> </span> </div> <div data-name="javascript"> <a href="https://python.github.net.cn" class="post-tag no-tag-menu js-gps-track" >python</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1902243</span> </span> </div> <div data-name="javascript"> <a href="https://vscode.github.net.cn" class="post-tag no-tag-menu js-gps-track" >vscode</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">56040</span> </span> </div> <div data-name="javascript"> <a href="https://dockerdocs.cn" class="post-tag no-tag-menu js-gps-track" >docker</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">110988</span> </span> </div> <div data-name="javascript"> <a href="https://github.net.cn" class="post-tag no-tag-menu js-gps-track" >github</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49000</span> </span> </div> <div data-name="javascript"> <a href="https://flask.github.net.cn" class="post-tag no-tag-menu js-gps-track" >flask</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49129</span> </span> </div> <div data-name="javascript"> <a href="https://ffmpeg.github.net.cn" class="post-tag no-tag-menu js-gps-track" >ffmpeg</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">24037</span> </span> </div> <div data-name="javascript"> <a href="https://jmeter.net" class="post-tag no-tag-menu js-gps-track" >jmeter</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">16910</span> </span> </div> <div data-name="javascript"> <a href="https://matplotlib.net" class="post-tag no-tag-menu js-gps-track" >matplotlib</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">63493</span> </span> </div> <div data-name="javascript"> <a href="https://getbootstrap.net" class="post-tag no-tag-menu js-gps-track" >bootstrap</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">54641</span> </span> </div> </div> </div> </div> </div> <footer id="footer" class="site-footer js-footer" role="contentinfo"> <div class="site-footer--container"> <div class="site-footer--logo"> <a href="https://stackoverflow.com"><svg aria-hidden="true" class="native svg-icon iconLogoGlyphMd" width="32" height="37" viewBox="0 0 32 37"><path d="M26 33v-9h4v13H0V24h4v9h22Z" fill="#BCBBBB"/><path d="m21.5 0-2.7 2 9.9 13.3 2.7-2L21.5 0ZM26 18.4 13.3 7.8l2.1-2.5 12.7 10.6-2.1 2.5ZM9.1 15.2l15 7 1.4-3-15-7-1.4 3Zm14 10.79.68-2.95-16.1-3.35L7 23l16.1 2.99ZM23 30H7v-3h16v3Z" fill="#F48024"/></svg></a> </div> <nav class="site-footer--nav"> <div class="site-footer--col"> <h5 class="-title"><a href="https://stackoverflow.jp" class="js-gps-track" data-gps-track="footer.click({ location: 3, link: 15})">Stack Overflow 日本語サイト</a></h5> <p>CC BY-SA知識共有ライセンス契約に従う。</p> </div> </nav> </div> </footer> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?709ff2ad9744e86b5b0eee677fc13ede"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-1MW5BV8G8E"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-1MW5BV8G8E'); </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6117966252207595" crossorigin="anonymous"></script> </body> </html>