Я пытаюсь разобрать * большой файл (> 5 ГБ) структурированных данных разметки. Формат данных по существу является XML, но нет явного корневого элемента. Каков наиболее эффективный способ сделать это?Разбор больших файлов псевдо-xml в python
Проблема с синтаксическими анализаторами SAX заключается в том, что для них требуется корневой элемент, поэтому либо я должен добавить псевдофайл в поток данных (есть ли эквивалент Java SequenceInputStream в Python?), Либо я должен переключиться на анализатор, основанный на не-SAX-совместимости (есть ли преемник sgmllib?)
Структура данных довольно проста. В основном это список элементов:
<Document>
<docid>1</docid>
<text>foo</text>
</Document>
<Document>
<docid>2</docid>
<text>bar</text>
</Document>
* фактически итерацию
Является 'возвращение '' 'на самом деле то, что нужно делать на' StopIteration'? Как бы клиент этого кода заметил EOF, если он использовал только 'read()' then? –
Одним из свойств потоковых объектов в python является то, что вызов read() блокирует и возвращает хотя бы один байт, или в случае EOF возвращает пустую строку. Вот как работает исходный метод file.read. – liori
Возможно, вы захотите использовать это совместно с PullDOM - он сочетает в себе потоковый характер SAX с иерархической природой DOM. – RichieHindle