【发布时间】:2015-02-17 20:11:59
【问题描述】:
我的文件包含这种格式 [{"a":1, "c":4},{"b":2, "d":5}],我想将此文件读入 python 中的列表。列表项应该是 {"a":1, "c":4} 和 {"b":2, "d":5}。我试图读入一个字符串,然后将类型转换为一个列表,但这没有帮助。它是一个字符一个字符地读取。
【问题讨论】:
标签: json list python-2.7
我的文件包含这种格式 [{"a":1, "c":4},{"b":2, "d":5}],我想将此文件读入 python 中的列表。列表项应该是 {"a":1, "c":4} 和 {"b":2, "d":5}。我试图读入一个字符串,然后将类型转换为一个列表,但这没有帮助。它是一个字符一个字符地读取。
【问题讨论】:
标签: json list python-2.7
您可以像这样将包含列表的字符串“转换”为实际列表
>>> import ast
>>> ast.literal_eval('[{"a":1, "c":4},{"b":2, "d":5}]')
[{'a': 1, 'c': 4}, {'b': 2, 'd': 5}]
你当然可以为你从文件中读取的数据分出文字字符串
【讨论】:
另一个更脏的选项是这个(它会产生字符串列表):
a = str('[{"a":1, "c":4},{"b":2, "d":5}]')
b = list()
for i in a.replace('[','').replace(']','').split(sep='},'):
b.append(i+'}')
b[len(b)-1] = b[len(b)-1].replace('}}','}')
for i in b:
i
'{"a":1, "c":4}'
'{"b":2, "d":5}'
由于 Tim 之前提出的 ast 会比第一级更深入,它实际上会将底层字符串转换为字典。因此,您将获得字典列表,而不是字符串列表。我不确定这是否是你想要的。
【讨论】:
it will actually convert underlying string into dictionary. So instead of list of strings you will get list of dictionaries. I am not sure if that's what you want to get. 我想是的,他说The list items should be {"a":1, "c":4} and {"b":2, "d":5}
使用 json 模块加载 json 数据。由于json数据是列表,所以在python中调用json.load时会转换为列表:
import json
with open(path_to_jsonfile, 'r') as jsonfile:
jsonlist = json.load(jsonfile)
for listitem in jsonlist:
print listitem
结果应该是:
{u'a': 1, u'c': 4}
{u'b': 2, u'd': 5}
如果您不想读取整个文件,而只是从中提取一个字符串并尝试将其转换为列表,请改用json.loads 方法。 json.load 读取文件,json.loads 读取字符串。
【讨论】: