Skip to main content
 首页 » 编程设计

python store lines from stdin 直接列出对象

2025年05月04日18zlslch

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

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

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

请您参考如下方法:

一个不好的方法是使用input。然而,这是不安全的,该函数已在 Python 3 中删除(Python 3 中称为 input 的函数与 Python 2 的 raw_input 功能相同)。

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

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

在线查看它:ideone