来自dictonary的Python-String以更易读的形式出现

时间:2018-02-13 19:57:35

标签: python-3.x

我想阅读并将字典保存到文件中。问题是如果字典很大,str(dict)会返回一行不是人类可读的行,如下所示:

{"category1": {"one": ["hello", [0, 1, 2, 3]], "two": ["world", [3, 2, 1, 0]]}, "category2": {"one": ["lol", [0, 1, 2, 3]], "two": ["1234", [3, 2, 1, 0]]}}

我的代码读取文件,将字典保存到变量us eval(string),进行更改,将字典转换为字符串并将其保存回同一文件。
文件开头包含此字符串:

{
    "category1": {
        "one": ["hello", [0, 1, 2, 3]],
        "two": ["world", [3, 2, 1, 0]]
    },

    "category2": {
        "one": ["lol", [0, 1, 2, 3]],
        "two": ["1234", [3, 2, 1, 0]]
    }
}

有没有办法以字母形式从字典中创建字符串?

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?

import json

d = {"category1": {"one": ["hello", [0, 1, 2, 3]], "two": ["world", [3, 2, 1, 0]]}, "category2": {"one": ["lol", [0, 1, 2, 3]], "two": ["1234", [3, 2, 1, 0]]}}

with open('output.json', 'w') as f:
    json.dump(d, f, indent=2) 

答案 1 :(得分:1)

所以有两件事。我不会使用eval()来加载json字符串。 Eval可能不稳定且使用起来很危险。我会这样做:

import json
jsonvar = json.loads(jsonstring)

然后将它设计好并将其转换回字符串以写入文件我会这样做:

import json
jsonvar = json.dumps(jsonvar, indent=4)

如果您在尝试导入json时遇到错误,请使用pip install json

进行安装