我有一个这样的文件:Python的JSON保存编码
aarónico
aaronita
ababol
abacá
abacería
abacero
ábaco
#more words, with no ascii chars
,当我读到和文件到控制台打印,其打印一模一样的,符合市场预期,但是当我做:
f.write(json.dumps({word: Lookup(line)}))
这是保存代替:
{"aar\u00f3nico": ["Stuff"]}
当我预计:
{"aarónico": ["Stuff"]}
我需要得到相同的,当我jason.loads()它,但我不知道在哪里或如何做的编码或如果它需要得到它的工作。
编辑
这是将数据保存到一个文件中的代码:
with open(LEMARIO_FILE, "r") as flemario:
with open(DATA_FILE, "w") as f:
while True:
word = flemario.readline().strip()
if word == "":
break
print word #this is correct
f.write(json.dumps({word: RAELookup(word)}))
f.write("\n")
而这一次加载数据并返回Dictionary对象:
with open(DATA_FILE, "r") as f:
while True:
new = f.readline().strip()
if new == "":
break
print json.loads(new) #this is not
我如果密钥与保存的不一致,则无法查找字典。
EDIT 2
>>> import json
>>> f = open("test", "w")
>>> f.write(json.dumps({"héllö": ["stuff"]}))
>>> f.close()
>>> f = open("test", "r")
>>> print json.loads(f.read())
{u'h\xe9ll\xf6': [u'stuff']}
>>> "héllö" in {u'h\xe9ll\xf6': [u'stuff']}
False
您正在查看unicode字符的JSON编码。 *这很正常*。这完全符合[RFC 4627 JSON](http://www.ietf.org/rfc/rfc4627.txt?number=4627)(关于字符串值,请参阅第2.5节)。 – 2013-03-03 10:17:24
Json正在保存数据。 Unicode字符串将转换为您提供的格式。 – 2013-03-03 10:17:42
但是当我再次加载它时,它会转回原来的状态。 – gcq 2013-03-03 10:18:44