0

当我用json保存时,文件中的一切都正常,但是当我加载加载的对象时不正确。

file=open("hello", "w")

a={'name':'jason', 'age':73, 'grade':{ 'computers':97, 'physics':95, 'math':89} }

json.dump(a, file)

正如我在文件中所说,没关系,但是当我加载时,您会发现问题。

文件:

" {"age": 73, "grade": {"computers": 97, "physics": 95, "math": 89}, "name": "jason"} "

现在负载:

b=json.load(file)

print b

输出:

{u"age": 73, u"grade": {u"computers": 97, u"physics": 95, u"math": 89}, u"name": u"jason"}

您可以清楚地注意到,在每个字符串之前都有u。它不会影响代码,但我不喜欢那里..

为什么会这样?

4

2 回答 2

1

它只是在表示中......它并不是真的存在它只是表示它是unicode

print u"this" == "this"

不确定这需要自己的答案:/

于 2013-05-14T16:29:07.357 回答
0

这是一个将 unicode dict 转换为 utf8 dict 的函数。

def uni2str(input):
    if isinstance(input, unicode):
        return input.encode('utf-8')
    elif isinstance(input, dict):
        return {uni2str(key): uni2str(value) for key, value in input.items()}
    elif isinstance(input, list):
        return [uni2str(element) for element in input]
    else:
        return input

a = {u'name':u'Yarkee', u'age':23, u'hobby':[u'reading', u'biking']}

print(uni2str(a))

输出将是:

{'hobby': ['reading', 'biking'], 'age': 23, 'name': 'Yarkee'}
于 2013-05-14T17:09:12.337 回答