python存储从stdin直接到列表对象的行

时间:2012-07-14 23:20:50

标签: python

在stackoverflow上研究这个问题的答案时,我已经学到了很多新东西,但到目前为止还无法完成交易。

我的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())显式创建列表,它最终会使每个字符成为列表中的单独项目,而不是按照我希望的方式解析文本。无论如何..回到搜索。 (感谢您阅读。)

1 个答案:

答案 0 :(得分:6)

糟糕的方法是使用input。然而,这是不安全的,并且该函数已在Python 3中删除(Python 3中的函数input与Python 2的raw_input完全相同)。

更好的方法是使用ast.literal_eval

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

查看在线工作:ideone