05. Работа с JSON, CSV и API

Работа с JSON, CSV и API

Описание: В этом уроке мы научимся сохранять данные в форматах JSON и CSV, а также получать их из интернета с помощью API. Эти навыки важны для создания приложений, которые обмениваются данными с другими сервисами.

1. Что такое JSON и зачем он нужен

JSON (JavaScript Object Notation) — лёгкий формат обмена данными между программами. Его часто используют веб-сервисы и API.

Пример JSON:


{
  "name": "Anna",
  "age": 25,
  "skills": ["Python", "HTML", "SQL"]
}

2. Работа с JSON в Python

Python имеет встроенный модуль json, который позволяет читать и записывать такие файлы.

import json

# Python → JSON user = { 'name': 'Anna', 'age': 25, 'skills': ['Python', 'SQL'] }

with open('user.json', 'w', encoding='utf-8') as f: json.dump(user, f, ensure_ascii=False, indent=2)

print('Файл user.json успешно создан!')

  • dump() — записывает данные в файл.
  • ensure_ascii=False — сохраняет кириллицу.
  • indent=2 — делает красивое форматирование.

Теперь прочитаем файл обратно:


with open('user.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
    print(data)

Совет: JSON идеально подходит для хранения настроек, профилей пользователей или списков задач.

3. Работа с CSV-файлами

CSV (Comma-Separated Values) — это таблица в текстовом виде, где значения разделены запятыми (или точками с запятой).

import csv

# Запись данных with open('users.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['Имя', 'Возраст', 'Город']) writer.writerow(['Анна', 25, 'Москва']) writer.writerow(['Иван', 30, 'Минск'])

print('Файл users.csv создан!')

Чтение CSV-файла:


with open('users.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

4. Использование requests для работы с API

API (Application Programming Interface) позволяет программам обмениваться данными. Например, получить прогноз погоды или курс валют.

Для этого установим библиотеку requests:


pip install requests

Пример запроса к бесплатному API:


import requests

url = 'https://api.github.com/users/octocat' response = requests.get(url) data = response.json()

print('Имя пользователя:', data['login']) print('Публичных репозиториев:', data['public_repos'])

  • requests.get() — делает HTTP-запрос.
  • .json() — преобразует ответ в Python-объект.

5. Обработка ошибок при работе с API

Интернет-запрос может завершиться ошибкой, поэтому важно проверять статус ответа.

response = requests.get(url)
if response.status_code == 200:
    print(' Успешно!')
else:
    print(' Ошибка:', response.status_code)

6. Мини-проект: сохранение погоды в CSV

Создадим программу, которая получает погоду через API и сохраняет её в CSV.

import requests
import csv

API_KEY = 'demo' # вставь свой ключ, если требуется CITY = 'Tashkent'

url = f'https://api.open-meteo.com/v1/forecast?latitude=41.3&longitude=69.3&current_weather=true' response = requests.get(url)

data = response.json() weather = data['current_weather']

print('Температура:', weather['temperature'], '°C')

with open('weather.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['Температура', 'Скорость ветра', 'Время']) writer.writerow([weather['temperature'], weather['windspeed'], weather['time']])

print('Данные сохранены в weather.csv!')

7. Лучшие практики при работе с API

  • Проверяйте статус-код (200 — всё ок, 404 — не найдено, 500 — ошибка сервера).
  • Используйте try/except для надёжности.
  • Кэшируйте результаты, если API ограничивает количество запросов.
  • Не храните API-ключи в коде — используйте переменные окружения.

8. Работа с JSON-API и вложенными данными

Если данные сложные, их можно перебирать с помощью циклов и ключей.

users = {
  'data': [
    {'name': 'Anna', 'age': 25},
    {'name': 'Ivan', 'age': 30}
  ]
}

for user in users['data']: print(user['name'], '-', user['age'])

Итоги урока

Теперь вы умеете:
  • Читать и записывать JSON-файлы.
  • Работать с CSV-таблицами.
  • Использовать requests для работы с API.
  • Создавать небольшие программы для обмена данными с внешними сервисами.