JSON — JavaScript Object Notation
JSON — самый популярный формат обмена данными. В Python данные преобразуются между объектами Python и JSON-строками:
| Python | JSON |
|---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True, False | true, false |
None | null |
Чтение JSON из файла
import json
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data["name"]) # доступ как к обычному словарю
print(data["hobbies"][0]) # доступ к спискам внутри
Пример содержимого data.json:
{
"name": "Максим",
"age": 25,
"hobbies": ["Python", "шахматы", "бег"],
"active": true
}
Запись в JSON
import json
data = {
"name": "Максим",
"age": 25,
"hobbies": ["Python", "шахматы", "бег"],
"active": True
}
with open("output.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
print("Файл сохранён!")
💡 Совет: Параметры
json.dump():
ensure_ascii=False— сохраняет кириллицу как есть
indent=4— красивое форматирование с отступами
JSON-строка ↔ Python-объект
import json
# Из строки JSON в Python
json_str = '{"name": "Анна", "score": 95}'
data = json.loads(json_str)
print(data["name"]) # Анна
print(type(data)) #
# Из Python в строку JSON
person = {"name": "Борис", "age": 30}
json_str = json.dumps(person, ensure_ascii=False)
print(json_str) # {"name": "Борис", "age": 30}
load/dump — работа с файлами (f — file)
loads/dumps — работа со строками (s — string)
CSV — Comma-Separated Values
CSV — простой текстовый формат для табличных данных (строки и столбцы). Отлично открывается в Excel.
Пример students.csv:
name,age,grade
Анна,20,5
Борис,21,4
Вика,19,5
Чтение CSV
import csv
with open("students.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(f"{row['name']}: {row['age']} лет, оценка {row['grade']}")
# Вывод:
# Анна: 20 лет, оценка 5
# Борис: 21 лет, оценка 4
# Вика: 19 лет, оценка 5
DictReader читает каждую строку как словарь, где ключи — названия столбцов.
Запись CSV
import csv
data = [
{"name": "Анна", "age": 20, "grade": 5},
{"name": "Борис", "age": 21, "grade": 4},
{"name": "Вика", "age": 19, "grade": 5},
]
with open("output.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age", "grade"])
writer.writeheader() # записать заголовки столбцов
writer.writerows(data) # записать все строки
print("CSV сохранён!")
💡 Совет: Важно: всегда указывайте
newline=""при открытии CSV-файлов на Windows — иначе появятся лишние пустые строки.
Практический пример: конвертер JSON → CSV
import json, csv
# Читаем список пользователей из JSON
with open("users.json", "r", encoding="utf-8") as f:
users = json.load(f)
# Сохраняем в CSV (только нужные поля)
with open("users.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "email", "age"])
writer.writeheader()
for user in users:
writer.writerow({
"name": user["name"],
"email": user["email"],
"age": user["age"]
})
print("Конвертация завершена!")