Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 170

tag: item attributes: {'price': '$4.00'}

Структурированные текстовые файлы

223

tag: lunch attributes: {'hours': '11-3'}

tag: item attributes: {'price': '$5.00'}

tag: dinner attributes: {'hours': '3-10'}

tag: item attributes: {'price': '8.00'}

>>> len(root) # количество разделов menu

3

>>> len(root[0]) # количество элементов breakfast

2

Для каждого элемента вложенных списков tag — это строка тега, а attrib — это

словарь его атрибутов. Библиотека ElementTree имеет множество других спосо-

бов поиска данных, организованных в формате XML, модификации этих данных

и даже записи XML-файлов. Все детали изложены в документации библиотеки

ElementTree (http://bit.ly/elementtree).

Среди других библиотек для работы с XML в Python можно отметить следу-

ющие:

 xml.dom. The Document Object Model (DOM), знакомая разработчикам на

JavaScript, представляет веб-документы как иерархические структуры. Этот

модуль загружает XML-файл в память целиком и позволяет вам получать до-

ступ ко всем его частям;

 xml.sax. Simple API for XML, или SAX, разбирает XML на ходу, поэтому он

не загружает в память сразу весь документ. Он может стать хорошим выбором,

если вам нужно обработать очень большие потоки XML.

HTML

Огромные объемы данных сохраняются в формате гипертекстового языка размет-

ки (Hypertext Markup Language, HTML), это основной формат документов в сети

Интернет. Проблема заключается в том, что значительная часть этих докумен-

тов не соответствует правилам формата HTML, поэтому его трудно разобрать.

Помимо этого, большая часть HTML предназначена для того, чтобы форматировать

выводимую информацию, а не обмениваться данными. Поскольку эта глава пред-

назначена для того, чтобы описать относительно хорошо определенные форматы

данных, я вынес рассмотрение HTML в главу 9.

JSON

JavaScript Object Notation (JSON) (http://www.json.org/) стал очень популярным

форматом обмена данными, вышедшим за пределы языка JavaScript. Формат JSON

является частью языка JavaScript и часто содержит легальный с точки зрения

Python синтаксис. Он хорошо подходит Python, что делает его хорошим выбором

при определении формата данных для обмена между программами. Вы увидите

множество примеров использования JSON при веб-разработке в главе 9.

224

Глава 8. Данные должны куда-то попадать

В отличие от XML, для которого написано множество модулей, для JSON су-

ществует всего один модуль с простым именем json. Эта программа кодирует (вы-

гружает) данные в строку JSON и декодирует (загружает) строку JSON обратно.

В следующем примере мы создадим структуру данных, содержащую данные из

предыдущего примера, где описывался формат XML:

>>> menu = \

... {