Простой Python. Современный стиль программирования (Любанович) - страница 124

>>>> import csv

>>>> with open('villains', 'rt') as fin:

>…·····cin = csv.DictReader(fin)

>…·····villains = [row for row in cin]

>…

>>>> print(villains)

>[{'last': 'No', 'first': 'Doctor'},

>{'last': 'Klebb', 'first': 'Rosa'},

>{'last': 'Big', 'first': 'Mister'},

>{'last': 'Goldfinger', 'first': 'Auric'},

>{'last': 'Blofeld', 'first': 'Ernst'}]

XML

Файлы с разделителями охватывают только два измерения: ряды (строки) и колонки (поля внутри строк). Если вы хотите обмениваться структурами данных между программами, вам нужен способ кодировать иерархии, последовательности, множества и другие структуры с помощью текста.

XML является самым известным форматом разметки, который можно применять в этом случае. Для разделения данных он использует теги, как показано в следующем примере (файл menu.xml):

>

>

>··

>····breakfast burritos

>····pancakes

>··

>··

>····hamburger

>··

>··

>····spaghetti

>··

>

Рассмотрим основные характеристики формата XML.

• Теги начинаются с символа <. В этом примере использованы теги menu, breakfast, lunch, dinner и item.

• Пробелы игнорируются.

• Обычно после начального тега вроде

следует остальной контент, а затем соответствующий конечный тег вроде .

• Теги могут быть вложены в другие теги на любой глубине. В этом примере теги item являются потомками тегов breakfast, lunch и dinner, которые, в свою очередь, являются потомками тега menu.

• Внутри стартового тега могут встретиться опциональные атрибуты. В этом примере price является опциональным атрибутом тега item.

• Теги могут содержать значения. В этом примере каждый тег item имеет значение вроде pancakes у второго элемента тега breakfast.

• Если у тега с именем thing нет значений или потомков, он может быть оформлен как единственный тег путем включения прямого слеша прямо перед закрывающей угловой скобкой (), вместо того чтобы использовать начальный и конечный теги и .

• Место размещения данных — атрибуты, значения или теги-потомки — является в какой-то мере произвольным. Например, мы могли бы написать последний тег item как .

XML часто используется в каналах данных и сообщениях и имеет подформаты вроде RSS и Atom. В некоторых отраслях, например в области бизнеса, имеются специализированные форматы XML (http://bit.ly/xml-finance).

Сверхгибкость формата XML вдохновила многих людей на создание библиотек для Python, каждая из которых отличается от других подходом и возможностями.