Estoy tratando de analizar * un archivo grande (> 5GB) de datos estructurados de marcado. El formato de datos es esencialmente XML, pero no hay un elemento raíz explícito. ¿Cuál es la forma más eficiente de hacer eso?Analizando archivos pseudo-xml grandes en python
El problema con los analizadores SAX es que requieren un elemento raíz, por lo que debo agregar un pseudo elemento a la secuencia de datos (¿existe un equivalente a SequenceInputStream de Java en Python?) O tengo que cambiar a un analizador basado en eventos no conformado por SAX (¿hay un sucesor de sgmllib?)
La estructura de los datos es bastante simple. Básicamente una lista de elementos:
<Document>
<docid>1</docid>
<text>foo</text>
</Document>
<Document>
<docid>2</docid>
<text>bar</text>
</Document>
* realidad para iterar
es 'retorno ''' realmente lo que hay que hacer en 'StopIteration'? ¿Cómo notará un cliente de ese código el EOF si solo usara 'leer()' entonces? –
Una de las propiedades de los objetos similares a secuencias en python es que una llamada de lectura() bloquea o devuelve al menos un byte, o en el caso de EOF, devuelve cadena vacía. Así es como funciona el método file.read original. – liori
Es posible que desee utilizar esto junto con PullDOM: combina la naturaleza de transmisión de SAX con la naturaleza jerárquica de DOM. – RichieHindle