2013-07-22 42 views
1

比方說,我從一個文件,叫做「info.dat」讀,包含此:讀取從文件列表,並將其轉換成Python詞典列表

[{'name': 'Bob', 'occupation': 'architect', 'car': 'volvo'}, {'name': 'Steve', 'occupation': 'builder', 'car': 'Ford'}] 

我怎麼能閱讀和把它變成一個字典列表?如果我這樣做:

with open('info.dat') as f: 
    data = f.read() 

它只是讀入一個字符串,即使我這樣做是爲了打破它:

data = data[1:-1] 
data = data.split('},') 

我還是要讓它進入一本字典。有沒有更好的/更清潔的方式來做到這一點?

+0

詳細說明您的問題。它已經是一個詞典列表。 –

回答

4

使用ast.literal_eval可以讀取簡單的Python文字,如字典/元組/列表 - 雖然不像eval那樣「功能強大」,但由於其更具限制性,因此更安全。

from ast import literal_eval 
with open('yourfile') as fin: 
    your_list = literal_eval(fin.read()) 
1

也許使用eval -

eval("ld ="+open("info.dat").read()) 

然後訪問使用ld變量

4

使用ast.literal_eval名單:

import ast 
with open('info.dat') as f: 
    data = ast.literal_eval(f.read()) 

如文檔說,這是比文檔更安全因爲它「安全地評估表達式節點或包含Python表達式的字符串」。

如果它不安全,則會引發錯誤。

相關問題