Введение
JSON — это текстовый формат обмена данными, основанный на JavaScript. Но при этом формат независим от JS и может использоваться в любом языке программирования.
В данной статье научимся работать с json-файлами в языке программирования Python.
Модуль json
Для работы с json-файлами нам понадобится модуль json, который к счастью входит в стандартную библиотеку python. Импортируем его:
import json
Создание json-файлов в Python
Создадим словарь data, и занесём в него данные к примеру человека по имени «Василий»:
import json
data = {
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": True,
"skills": ["To eat", "Play games", "Drinking beer"]
}
Для создания json-файла используем конструкцию with … as. Назовём файл data1.json, и при момощи функции dump() преобразуем наш словарь в json-формат:
import json
data = {
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": True,
"skills": ["To eat", "Play games", "Drinking beer"]
}
with open("data1.json", "w") as f:
f.write(json.dumps(data, indent=4))
Параметр indent указывает на количество пробелов слева.
После запуска кода создастся json-файл под названием data1.json со следующим содержимым:
{
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": true,
"skills": [
"To eat",
"Play games",
"Drinking beer"
]
}
Обработка символов, отличных от ASCII
Теперь разберёмся, как работать с кодировками отличными от ASCII. К примеру заменим все слова на русские:
import json
data = {
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": True,
"skills": ["Кушать", "Играть в игры", "Пить пиво"]
}
with open("data1.json", "w") as f:
f.write(json.dumps(data, indent=4))
После запуска кода мы увидим, последовательности юникода, вместо русских букв:
{
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": true,
"skills": [
"\u041a\u0443\u0448\u0430\u0442\u044c",
"\u0418\u0433\u0440\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u044b",
"\u041f\u0438\u0442\u044c \u043f\u0438\u0432\u043e"
]
}
Чтобы это исправить во-первых укажем кодировку при открытии файла, а в параметре ensure_ascii укажем False:
import json
data = {
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": True,
"skills": ["Кушать", "Играть в игры", "Пить пиво"]
}
with open("data1.json", "w", encoding="utf-8") as f:
f.write(json.dumps(data, indent=4, ensure_ascii=False))
После запуска кода получим json-файл со следующим содержимым:
{
"first_name": "Vasiliy",
"email": "vasya@gmail.com",
"salary": 25000.5,
"age": 23,
"human": true,
"skills": [
"Кушать",
"Играть в игры",
"Пить пиво"
]
}
Открыть json-файл в Python
Теперь научимся открывать json-файлы в самом Python.
Откроем файл в режиме для чтения используя конструкцию with … as, укажем кодировку UTF-8. Внутри конструкции в data загрузим данные из json-файла при момощи функции load() и выведем их:
import json
with open("data1.json", 'r', encoding='UTF-8') as f:
data = json.load(f)
print(data)
# Вывод: {'first_name': 'Vasiliy', 'email': 'vasya@gmail.com', 'salary': 25000.5, 'age': 23, 'human': True, 'skills': ['Кушать', 'Играть в игры', 'Пить пиво']}
Также можно использовать метод loads(), вместо load():
import json
with open("data1.json", 'r', encoding='utf-8') as f:
data = json.loads(f.read())
print(data)
# Вывод: {'first_name': 'Vasiliy', 'email': 'vasya@gmail.com', 'salary': 25000.5, 'age': 23, 'human': True, 'skills': ['Кушать', 'Играть в игры', 'Пить пиво']}
Видеоурок
Заключение
В ходе статьи мы с Вами научились работать с json-файлами в Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂