Работа с CSV, JSON, XML: загрузка и выгрузка данных

Введение: Почему CSV, JSON и XML? 🌐

Данные — это нефть 21 века! Но как их эффективно хранить и передавать? CSV, JSON и XML — три кита, на которых держится обмен данными.

  • CSV (Comma-Separated Values) — простой и универсальный формат табличных данных.
  • JSON (JavaScript Object Notation) — легковесный формат для структур данных, идеален для веба.
  • XML (eXtensible Markup Language) — мощный и гибкий, часто используется в корпоративных системах.

Работа с CSV 📊

Чтение CSV

import csv

with open('data.csv', 'r') as file:
    reader = csv.DictReader(file)  # Читаем как словарь
    for row in reader:
        print(row['name'], row['email'])  # Доступ по именам столбцов

Профессиональный совет: Используйте DictReader для удобного доступа к данным по именам столбцов.

Запись в CSV

import csv

data = [
    {'name': 'John', 'email': 'john@example.com'},
    {'name': 'Jane', 'email': 'jane@example.com'}
]

with open('output.csv', 'w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=['name', 'email'])
    writer.writeheader()  # Записываем заголовки
    writer.writerows(data)  # Записываем данные

Важно: newline='' предотвращает лишние пустые строки в Windows.


Работа с JSON 🗂️

Чтение JSON

import json

with open('data.json', 'r') as file:
    data = json.load(file)  # Загружаем JSON как Python-объект
    print(data['users'][0]['name'])  # Доступ к данным

Запись JSON

import json

data = {
    'users': [
        {'name': 'John', 'active': True},
        {'name': 'Jane', 'active': False}
    ]
}

with open('output.json', 'w') as file:
    json.dump(data, file, indent=4)  # indent для красивого форматирования

Лайфхак: Параметр indent делает JSON читаемым для людей.


Работа с XML 📜

Чтение XML

import xml.etree.ElementTree as ET

tree = ET.parse('data.xml')
root = tree.getroot()

for user in root.findall('user'):
    name = user.find('name').text
    email = user.find('email').text
    print(name, email)

Запись XML

import xml.etree.ElementTree as ET

root = ET.Element('users')
user1 = ET.SubElement(root, 'user')
ET.SubElement(user1, 'name').text = 'John'
ET.SubElement(user1, 'email').text = 'john@example.com'

tree = ET.ElementTree(root)
tree.write('output.xml', encoding='utf-8', xml_declaration=True)

Совет: Для сложных XML используйте lxml — он быстрее и функциональнее.


Реальные кейсы применения 🛠️

  1. CSV: Экспорт данных из Excel для анализа в Python.
  2. JSON: Обмен данными между веб-приложением и сервером (REST API).
  3. XML: Конфигурационные файлы в крупных корпоративных системах.

Пример интеграции:

# Чтение CSV -> Конвертация в JSON -> Сохранение
import csv
import json

data = []
with open('input.csv', 'r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    for row in csv_reader:
        data.append(row)

with open('output.json', 'w') as json_file:
    json.dump(data, json_file, indent=4)

Производительность и лучшие практики ⚡

  • Для больших CSV: Используйте pandas — он обрабатывает гигабайты данных молниеносно.
  • Для сложных JSON: Рассмотрите orjson — он быстрее стандартного модуля json.
  • Для XML: lxml — золотой стандарт для производительности.

Важно: Всегда закрывайте файлы после работы или используйте контекстный менеджер (with), как в примерах выше.


Заключение: Что дальше? 🚀

Теперь вы вооружены знаниями для работы с основными форматами данных!

  • Попробуйте загрузить CSV в Pandas DataFrame.
  • Поэкспериментируйте с парсингом XML веб-страниц.
  • Исследуйте, как JSON используется в API (например, погодные сервисы).

Помните: мастерство приходит с практикой. Чем больше реальных задач вы решите, тем увереннее будете себя чувствовать!

Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty