Работа с json-файлами в Python

Работа с json-файлами в Python Статьи

Введение

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

Заключение

В ходе статьи мы с Вами научились работать с json-файлами в Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin
Admin
IT Start