1

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

4

1 回答 1

6

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

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

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

在线查看它:ideone

于 2012-07-14T23:23:12.493 回答