我的文件包含以下格式[{" a":1," c":4},{" b":2," d& #34;:5}]我希望将此文件读入python中的列表。列表项应为{" a":1," c":4}和{" b":2," d": 5}。我试着读取一个字符串,然后将类型转换为列表,但这没有帮助。它正逐字逐句地阅读。
答案 0 :(得分:2)
您可以将包含列表的字符串“转换”为像这样的实际列表
>>> import ast
>>> ast.literal_eval('[{"a":1, "c":4},{"b":2, "d":5}]')
[{'a': 1, 'c': 4}, {'b': 2, 'd': 5}]
您当然可以为从文件
中读取的数据分出文字字符串答案 1 :(得分:0)
另一个更脏的选项就是这个(它会生成字符串列表):
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会比第一级更低,它实际上会将底层字符串转换为字典。因此,您将获得字典列表而不是字符串列表。我不确定这是不是你想要的。
答案 2 :(得分:0)
使用json模块加载json数据。由于json数据是一个列表,当你调用json.load
时它将被转换为python中的列表:
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
读取字符串。