2016-05-28 5 views
0

Демпинг данных в файл с помощью json.dump. данные выглядит следующим образом:Дамп JSON прерывает мой словарь при использовании определенных символов

{"hello": {"this": 1, "a": 1, "is": 1, "test": 1}} 

код я использую для достижения этого заключается в следующем (worddict файл, что-то вроде file.json):

with open(words, 'w') as fp: 
    json.dump(worddict, fp) 
fp.close() 

Я хотел бы иметь данные в этом формате:

{ 
"hello": { 
    "a": 1, 
    "is": 1, 
    "test": 1, 
    "this": 1 
} 

Я изменил код для этого:

with open(words, 'w') as fp: 
    json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': ')) 
fp.close() 

И это работает, пока я пытаюсь сбросить символов «А», «Э», «U» ... Эти символы разбивает файл worddict, и когда я кот файл он выглядит следующим образом:

{ 

Любая идея, почему?

+0

Просьба предоставить краткую, полную программу, которая демонстрирует проблему. См. [Mcve] для получения дополнительной информации. –

ответ

0

Заменить

json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': ')) 

с

json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False) 
0

Я побежал фрагмент кода в обоих python2 и Python3. В python3 он не дал мне никаких ошибок.

Я побежал следующий код:

import json 

words = 'a.txt' 
worddict = {"hello": {"this": 1, "a": 1, "is": 1, "test": "Á"}} 
with open(words, 'w') as fp: 
    json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': ')) 

и получил в качестве выходного сигнала:

{ 
    "hello": { 
     "a": 1, 
     "is": 1, 
     "test": "\u00c1", 
     "this": 1 
    } 
} 

Но в python2, я столкнулся с ошибками. Я получил ссылку, описывающую ошибку: http://www.python.org/peps/pep-0263.html

Проблема возникает в python2 как строки python2 как не unicode по умолчанию. Поэтому вы должны упомянуть кодировку в верхней части файла исходного кода. Я добавил «# coding = UTF-8» в начало файла, прежде чем запускается исходный код python, чтобы интерпретатор python знал кодировку файла. Как только я это сделал, код работал в python2, а также python3 без ошибок. я получил следующее в качестве вывода:

{ 
    "hello": { 
     "a": 1, 
     "is": 1, 
     "test": "\u00c1", 
     "this": 1 
    } 
} 

Вот мой полный окончательный исходный код, который я использовал.

# coding=UTF-8 

import json 

words = 'a.txt' 
worddict = {"hello": {"this": 1, "a": 1, "is": 1, "test": "Á"}} 
with open(words, 'w') as fp: 
    json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': ')) 

 Смежные вопросы

  • Нет связанных вопросов^_^