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

rsa*_*saw 1 python

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

我的python进程将通过stdin接收一行输入,例如

[{'name':'ry', 'age':28}, {'name':'bo', 'age':11}, {'name':'ed', 'age':99}]
Run Code Online (Sandbox Code Playgroud)

...我希望能够将此行直接存储到列表对象中,然后我可以迭代,例如

for i in list:
    print i['age'], i['name']
Run Code Online (Sandbox Code Playgroud)

...但是我无法使用它,无论是使用sys.stdin()还是fileinput模块.例如,即使我明确地创建一个列表,x = list(stdin.readline())它最终会使每个字符成为列表中的单独项目,而不是按照我想要的方式解析文本.无论如何..回到搜索.(谢谢阅读.)

Mar*_*ers 6

一个坏方法是使用input.然而,这是不安全的,并且该功能已在Python 3中删除(Python 3中调用的函数input与Python 2相同raw_input).

更好的方法是使用ast.literal_eval.

import ast
x = ast.literal_eval(stdin.readline())
Run Code Online (Sandbox Code Playgroud)

看到它在线工作:ideone