>>>> 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 является самым известным форматом разметки, который можно применять в этом случае. Для разделения данных он использует теги, как показано в следующем примере (файл 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, каждая из которых отличается от других подходом и возможностями.