Генераторы словарей и модули Рython
Функции в языке Python Функции в языке PythonВсе функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений,...
Реализация генераторов Реализация генераторовМы рассмотрели коллекции-последовательности, tuple, collections, na-medtuple и list, поддерживающие, как и строки, возможность извлечения срезов. Также было рассмотрено использование оператора распаковывания...
Парсинг документов XML Парсинг документов XMLXML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный...
Копирование коллекций Копирование коллекцийКопирование коллекций: Поскольку в языке Python повсюду используются ссылки на объекты, когда выполняется оператор присваивания (=), никакого копирования данных на самом деле не происходит. Если справа от оператора находится литерал,...
Парсинг документов XML
XML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный прикладной интерфейс для работы с документами XML). В библиотеке имеется два парсера DOM - один из них представлен модулем xml.dom, а второй - модулем xml.dom.mini-dom. Парсер SAX представлен модулем xml.sax.

Мы уже использовали функцию xml. sax.saxutils.escape из модуля xml. sax. saxutils (для экранирования служебных символов "&", ""). Существует также функция xml. sax. saxutils. quoteattr, которая выполняет то же действие, но дополнительно экранирует кавычки (чтобы текст можно было использовать в атрибутах тегов); обратное преобразование можно выполнить с помощью функции xml. sax. saxutils. unescape.

В библиотеке существует еще два парсера. Модуль xml. parsers, expat может использоваться для работы с документами XML с применением библиотеки expat, при наличии этой библиотеки в системе, и модуль xml. etree. ElementTree может использоваться для работы с документами XML через интерфейс словарей и списков. (По умолчанию парсеры DOM и дерева элементов за кулисами сами используют парсер, использующий библиотеку expat.)

Пример: модуль xml.etree.ElementTree: Парсеры DOM и SAX предоставляют прикладной программный интерфейс, которым пользуются опытные программисты, хорошо знающие формат XML, а модуль xml. etree. ElementTree предлагает более простой и более естественный для языка Python подход к парсингу и созданию документов XML. Модуль дерева элементов совсем недавно был добавлен в стандартную библиотеку1 и потому может оказаться незнакомым для некоторых читателей.

Поэтому мы представим здесь очень короткий пример, чтобы можно было составить общее представление об этом модуле. Мы исключили несколько строк и уменьшили отступы. Размер файла составляет примерно 840 Кбайт, поэтому мы сжали его с помощью gzip до более приемлемого размера в 72 Кбайт. К сожалению, парсер на основе анализа элементов дерева требует либо имя файла, либо объект файла, но он не в состоянии работать со сжатыми файлами, так как с его точки зрения такие файлы являются набором случайных двоичных данных.

Функция gzip. open из модуля gzip напоминает встроенную функцию open , за исключением того, что она читает файлы, сжатые при помощи утилиты gzip (то есть с файлы с расширением .gz), просто как двоичные данные. Нам необходимо обеспечить доступность этих данных для парсера в виде файла, поэтому мы использовали метод bytes, decode для преобразования двоичных данных в строку с кодировкой символов UTF-8 (эта кодировка по умолчанию используется для файлов XML) и создали объект io.StringlO, напоминающий файл, со строкой, вмещающей все содержимое файла XML. Здесь мы создали новый объект xml.etree.
Навигация: 1 2 3
 
 
© Copyright