gpt4 book ai didi

python - 将字典保存到 json 或从 json 加载字典时出现意外输出

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:35 24 4
gpt4 key购买 nike

Windows 7 上的 Python 2.7.6我使用的代码:

import json

settings = {
"vo" : "direct3d",
"ao" : "dsound",
"volume" : "100",
"priority" : "abovenormal"}

json.dump(settings, open('settings.json', 'w'))
settings = json.load(open('settings.json', 'r'))

print settings

在 settings.json 中我得到:

{"volume": "100", "priority": "abovenormal", "ao": "dsound", "vo": "direct3d"}

最后控制台输出:

{u'volume': u'100', u'priority': u'abovenormal', u'ao': u'dsound', u'vo': u'direct3d'}

我做错了什么?

最佳答案

你没有做错什么。 json.load 会将所有内容转换为 unicode,这就是 u 所代表的内容。

这不应影响该字典的使用,例如:

>>> result = {u'volume': u'100', u'priority': u'abovenormal', u'ao': u'dsound',
u'vo': u'direct3d'}
>>> result['volume']
u'100'

如果发现有问题,您可以随时使用 simplejson这不会强制使用 unicode。或者您可以编写一个转换器函数并将其挂接到 json.load - 作为 object_hook 参数的函数。

这是 object_hook-example from the docs :

>>> import json
>>> def as_complex(dct):
... if '__complex__' in dct:
... return complex(dct['real'], dct['imag'])
... return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
... object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')

关于python - 将字典保存到 json 或从 json 加载字典时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com