使用json.dump将数据转储到文件中。 数据如下所示:
{"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()
它有效,直到我尝试转储字符“Á”,“É”,“Ű”...... 这些字符会破坏worddict文件,当我捕获文件时,它看起来像这样:
{
知道为什么吗?
答案 0 :(得分:0)
替换
json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': '))
与
json.dump(worddict, fp, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)
答案 1 :(得分: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。所以你必须在源代码文件的顶部提到编码。 我添加了#34; #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=(',', ': '))