Лекція 9. Сховища даних
Серіалізація. Десеріалізація. Збереження даних в форматі JSON. Уявлення табличних даних в форматі CSV. Читання-запис файлу CSV за допомогою словника. Створення власного діалекту. Сніффер, розпізнавання діалекту. Формат XML файлу. Читання та запис даних в XML файл.
3. Уявлення табличних даних в форматі CSV. Читання-запис файлу CSV за допомогою словника. Створення власного діалекту. Сніффер, розпізнавання діалекту.
CSV — табличні дані
Запис даних у CSV файл.
import csv
data = [
{'Name': 'Anna', 'Age': 25},
{'Name': 'Oleh', 'Age': 30},
]
with open('people.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['Name', 'Age'])
writer.writeheader()
writer.writerows(data)
Читання з файлу.
with open('people.csv') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['Name'], row['Age'])
Створення власного діалекту CSV
Діалекти CSV (CSV dialects) — це набір налаштувань, які визначають формат CSV-файлу: якими символами розділяються поля, як обрамляються рядки в лапки, які символи екрануються тощо.
Бібліотека csv
у Python дозволяє визначати власні діалекти або використовувати вбудовані для роботи з CSV-файлами, які мають різні стилі.
Параметр | Опис |
---|---|
delimiter |
Символ, що розділяє стовпці (наприклад, , або ; ) |
quotechar |
Символ, що обрамляє текстові значення (зазвичай " ) |
escapechar |
Символ для екранування спецсимволів |
lineterminator |
Символ наприкінці рядка (наприклад, \n ) |
quoting |
Як обробляти лапки (наприклад, csv.QUOTE_ALL , csv.QUOTE_MINIMAL ) |
skipinitialspace |
Пропуск пробілу після роздільника |
Приклад коду
Для використання діалекту, його потрібно зареєструвати:
csv.register_dialect('my_dialect',
delimiter=';',
quotechar='"',
quoting=csv.QUOTE_MINIMAL)
Потім діалект можна використовувати під час читання файлу.
with open('custom.csv', 'w', newline='') as f:
writer = csv.writer(f, dialect='my_dialect')
writer.writerow(['Name', 'Age'])
writer.writerow(['Ivan', 28])
Sniffer
Сніффер (Sniffer) у контексті роботи з CSV у Python — це спеціальний клас csv.Sniffer
, який автоматично визначає формат CSV-файлу, тобто його діалект.
Іноді ми не знаємо наперед: який роздільник використано (,
, ;
, \t
, інше), чи є заголовки в першому рядку, як обрамлено текстові поля. Сніффер може переглянути файл і автоматично визначити діалект.
Приклад коду:
import csv
with open('data.csv', 'r') as f:
sample = f.read(1024) # зчитуємо зразок
f.seek(0) # повертаємось на початок файлу
sniffer = csv.Sniffer()
dialect = sniffer.sniff(sample)
has_header = sniffer.has_header(sample)
print("Діалект:", dialect.delimiter)
print("Є заголовок?", has_header)
reader = csv.reader(f, dialect)
for row in reader:
print(row)
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання