…·····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'}]
Перепишем CSV-файл с помощью новой функции DictWriter(). Мы также вызовем функцию writeheader(), чтобы записать начальную строку, содержащую имена колонок, в CSV-файл:
import csv
villains = [
····{'first': 'Doctor', 'last': 'No'},
····{'first': 'Rosa', 'last': 'Klebb'},
····{'first': 'Mister', 'last': 'Big'},
····{'first': 'Auric', 'last': 'Goldfinger'},
····{'first': 'Ernst', 'last': 'Blofeld'},
····]
with open('villains', 'wt') as fout:
····cout = csv.DictWriter(fout, ['first', 'last'])
····cout.writeheader()
····cout.writerows(villains)
Этот код создает файл villains со строкой заголовка:
first,last
Doctor,No
Rosa,Klebb
Mister,Big
Auric,Goldfinger
Ernst,Blofeld
Теперь считаем его обратно. Опуская аргумент fieldnames в вызове DictReader(), мы указываем функции использовать значения первой строки файла (first, last) как имена колонок и соответствующие ключи словаря:
>>> 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 является самым известным форматом
··
····
····
··
··
····
··
··
····
··
Рассмотрим основные характеристики формата XML.
• Теги начинаются с символа <. В этом примере использованы теги menu, breakfast, lunch, dinner и item.
• Пробелы игнорируются.
• Обычно после
• Теги могут быть
• Внутри стартового тега могут встретиться опциональные
• Теги могут содержать
• Если у тега с именем thing нет значений или потомков, он может быть оформлен как единственный тег путем включения прямого слеша прямо перед закрывающей угловой скобкой (
• Место размещения данных — атрибуты, значения или теги-потомки — является в какой-то мере произвольным. Например, мы могли бы написать последний тег item как
XML часто используется в
Сверхгибкость формата XML вдохновила многих людей на создание библиотек для Python, каждая из которых отличается от других подходом и возможностями.
Самый простой способ проанализировать XML в Python — использовать библиотеку ElementTree. Рассмотрим небольшую программу, которая анализирует файл menu.xml и выводит на экран некоторые теги и атрибуты:
>>> import xml.etree.ElementTree as et