在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())
显式创建列表,它最终会使每个字符成为列表中的单独项目,而不是按照我希望的方式解析文本。无论如何..回到搜索。 (感谢您阅读。)
答案 0 :(得分:6)
糟糕的方法是使用input
。然而,这是不安全的,并且该函数已在Python 3中删除(Python 3中的函数input
与Python 2的raw_input
完全相同)。
更好的方法是使用ast.literal_eval
。
import ast
x = ast.literal_eval(stdin.readline())
查看在线工作:ideone