2012-07-14 34 views
1

在研究這個問題的答案在這裏在stackoverflow,我學到了很多新的東西,但迄今無法完成交易。從標準輸入直接到列表對象的python存儲行

我的python進程將通過stdin接收一行輸入,例如,

[{'name':'ry', 'age':28}, {'name':'bo', 'age':11}, {'name':'ed', 'age':99}] 

...我想能夠直接存儲此行到列表對象,然後我就可以遍歷,例如

for i in list: 
    print i['age'], i['name'] 

...但我不能得到這個工作,我是否使用sys.stdin()fileinput模塊。例如,即使我使用x = list(stdin.readline())明確地創建了一個列表,它最終會使每個字符成爲列表中的一個單獨的項目,而不會按照我希望的方式解析文本。無論如何..回到搜索。 (感謝您的閱讀。)

回答

6

壞方法是使用input。然而,這是不安全的,並且該函數在Python 3中已經被刪除(在Python 3中名爲input的函數與Python 2的raw_input相同)。

更好的方法是使用ast.literal_eval

import ast 
x = ast.literal_eval(stdin.readline()) 

看到它聯機工作:ideone

+0

* BRILLIANT *非常感謝你馬克!正是我需要的。 – rsaw 2012-07-14 23:27:33