07 Июл 2023
2 мин
1277

Сохранение текстов в формате UTF-8 с использованием json.dumps

Существует распространенная проблема, которая возникает при работе с функцией json.dumps() в Python. Эта функция преобразует объект Python в строку JSON. Однако,

Содержание

Существует распространенная проблема, которая возникает при работе с функцией json.dumps() в Python. Эта функция преобразует объект Python в строку JSON. Однако, при попытке сериализации строк, содержащих не-ASCII символы, функция json.dumps() по умолчанию преобразует их в escape-последовательности вида \uXXXX.

Это могут быть, например, символы кириллицы или иероглифы. Представим, что у нас есть следующий код:

import json
json_string = json.dumps("Привет, мир!")
print(json_string)

Вывод будет следующим:

"\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!"

Это некрасиво и неудобно для чтения человеком. Вместо ожидаемого «Привет, мир!» мы получаем набор escape-последовательностей.

Решение проблемы

Существует простое решение этой проблемы. Функция json.dumps() имеет параметр ensure_ascii, который по умолчанию установлен в True. Именно это приводит к преобразованию не-ASCII символов в escape-последовательности. Если установить этот параметр в False, то функция json.dumps() будет сохранять все символы в исходном виде.

Вот как выглядит код с установкой ensure_ascii=False:

import json
json_string = json.dumps("Привет, мир!", ensure_ascii=False)
print(json_string)

Теперь вывод будет выглядеть так, как и ожидалось:

"Привет, мир!"

Таким образом, с помощью параметра ensure_ascii можно управлять поведением функции json.dumps() при сериализации не-ASCII символов. Это может быть очень полезно при работе с многоязычными данными или при необходимости сохранения данных в удобочитаемом формате.

Содержание

Добавить комментарий

Определи профессию по рисунку