2015-02-17 63 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}' 

由於由Tim建議AST早會比第一層deaper,它實際上將轉化基礎字符串進入字典。所以,而不是字符串列表,你會得到字典的列表。我不確定這是你想要得到的。

+0

'它實際上將底層字符串轉換爲字典。所以,而不是字符串列表,你會得到字典的列表。 「我想是這樣的,他說:」列表項應該是{「a」:1,「c」:4}和{「b」:2,「d」 :5}' – 2015-02-17 20:46:08

0

使用json模塊來加載json數據。由於JSON數據是一個列表,它會被轉換爲Python的list,當你調用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

我得到一個錯誤,因爲「沒有json對象解碼」。我已經嘗試加載json,但不知何故它不工作。 – 2015-02-18 03:05:12

+0

在這種情況下,您需要更新問題,確切地說明您的輸入內容以及您使用的確切代碼。您已經在問題中發佈了有效的json,並且我發佈的代碼正常工作。 – 2015-02-18 05:35:34