在 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
