从文件中读取列表

时间:2015-02-17 20:11:59

标签: json list python-2.7

我的文件包含以下格式[{" a":1," c":4},{" b":2," d& #34;:5}]我希望将此文件读入python中的列表。列表项应为{" a":1," c":4}和{" b":2," d": 5}。我试着读取一个字符串,然后将类型转换为列表,但这没有帮助。它正逐字逐句地阅读。

3 个答案:

答案 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读取字符串。