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

зовем функцию 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)

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

221

Этот код создает файл 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 является самым известным форматом разметки, который можно приме-

нять в этом случае. Для разделения данных он использует теги, как показано

в следующем примере (файл menu.xml):

<?xml version="1.0"?>

<menu>

<breakfast hours="7-11">

<item price="$6.00">breakfast burritos</item>

<item price="$4.00">pancakes</item>