"гораздо более подходящее имя, чем" keys_json "; когда вы загрузили данные JSON, это больше не JSON, это список / dict Python.

я есть этот код:

keys_file = open("keys.json")
keys = keys_file.read().encode('utf-8')
keys_json = json.loads(keys)
print(keys_json)

В keys.json есть неанглийские символы. Но в результате я получаю:

[{'category': 'мбт', 'keys': ['Блендер Philips',
'мультиварка Polaris']}, {'category': 'КБТ', 'keys':
['холод ильник атлант', 'посудомоечная
машина Bosch']}]

что я делаю?

 MarkWeston25 сент. 2017 г., 16:47
Что ты хочешь делать? Удалить не-ASCII символы?
 deceze♦25 сент. 2017 г., 17:16
@ Стефан: Ладно, немного крутить педали назад. По умолчанию это декодируется, да.По-разному на что это расшифровано какlocale.getpreferredencoding() возвращается) это то, что я должен был сказать. Кроме того, я не былдействительно отстаивая этот вызов ОПdecodeЯ хотел бы отметить, что они делают логически неправильную операцию для начала.
 freakish25 сент. 2017 г., 16:53
@ user2950593 Вы указалиutf-8 кодирование. Это кодировка файла?
 user295059325 сент. 2017 г., 16:49
Я хочу отображать их на обычном языке, а не в списке случайных непонятных символов.
 georgexsh25 сент. 2017 г., 16:54
что такое кодировка "keys.json", utf-8?

Ответы на вопрос(1)

Решение Вопроса

encode означаетдвоичные символы, Что вы хотите, когдачтение файлдвоичные символы → decode, Но на самом деле весь этот процесс слишком ручной, просто сделайте это:

    data = json.load(fh)

print(data)

with обрабатывает правильное открытие и закрытие файла,encoding аргументopen гарантирует, что файл читается с использованием правильной кодировки, иload call читает непосредственно из дескриптора файла, вместо того, чтобы сначала сохранять копию содержимого файла в памяти.

Если это все еще выводит недопустимые символы, это означает, что ваша исходная кодировка не UTF-8 или ваша консоль / терминал не обрабатывает UTF-8.

 user295059325 сент. 2017 г., 17:10
что означает fh?
 deceze♦25 сент. 2017 г., 17:12
«Дескриптор файла». Вы можете выбрать любое другое имя. Это более наглядно, чем "keys_file". Также обратите внимание, что "data"гораздо более подходящее имя, чем" keys_json "; когда вы загрузили данные JSON, это больше не JSON, это список / dict Python.

Ваш ответ на вопрос