2015-02-17 7 views
0

Мой файл содержит этот формат [{"a": 1, "c": 4}, {"b": 2, "d": 5}], и я хочу прочитать этот файл в список в python. Элементы списка должны быть {"a": 1, "c": 4} и {"b": 2, "d": 5}. Я попытался прочитать строку, а затем придумал список, но это не помогает. Он читает характер по характеру.читать список из файла

ответ

2

Вы можете «конвертировать» строку, содержащую список до фактического списка, как этого

>>> import ast 
>>> ast.literal_eval('[{"a":1, "c":4},{"b":2, "d":5}]') 
[{'a': 1, 'c': 4}, {'b': 2, 'd': 5}] 

Вы можешь, конечно, подразделы из символьной строки для данных, считанных из файла

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}' 

С аст предложил Тим раньше будет идти deaper, чем первый уровень, он будет на самом деле преобразовать основную строку в словарь. Поэтому вместо списка строк вы получите список словарей. Я не уверен, что это то, что вы хотите получить.

+0

'он фактически преобразует основную строку в словарь. Поэтому вместо списка строк вы получите список словарей. Я не уверен, что это то, что вы хотите получить. «Я думаю, что это так, он сказал:« Элементы списка должны быть {«a»: 1, «c»: 4} и {«b»: 2, «d» : 5} ' –

0

Используйте 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 читает строку.

+0

Я получаю сообщение об ошибке« No json object Decoded ». Я уже пытался загрузить json, но как-то его не работает. –

+0

В этом случае вам необходимо обновить вопрос именно с вашего ввода и с точным кодом, который вы используете. Вы отправили действительный json в вопрос, и код, который я опубликовал, работает правильно. –

Смежные вопросы