我試圖解析*大型文件(> 5GB)的結構化標記數據。數據格式本質上是XML,但沒有明確的根元素。什麼是最有效的方法呢?解析Python中的大型僞XML文件
SAX解析器的問題在於它們需要一個根元素,所以要麼向數據流添加一個僞元素(在Python中是否有相當於Java的SequenceInputStream?)或者我必須切換到一個非SAX符合事件的解析器(是否有sgmllib的繼承者?)
數據的結構非常簡單。元素基本上列表:
<Document>
<docid>1</docid>
<text>foo</text>
</Document>
<Document>
<docid>2</docid>
<text>bar</text>
</Document>
*實際上遍歷
是'回報 '''真的是正確的事情上'StopIteration'?如果該代碼的客戶端只使用'read()',那麼它會如何注意EOF? – 2009-10-02 11:38:45
python中類流對象的屬性之一是read()調用要麼阻塞並返回至少一個字節,要麼在EOF的情況下返回空字符串。原來的file.read方法就是這樣工作的。 – liori 2009-10-02 11:43:42
您可能希望將其與PullDOM結合使用 - 它將SAX的流式性質與DOM的分層特性相結合。 – RichieHindle 2009-10-02 11:52:29