在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())它最终会使每个字符成为列表中的单独项目,而不是按照我想要的方式解析文本.无论如何..回到搜索.(谢谢阅读.)
一个坏方法是使用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
| 归档时间: |
|
| 查看次数: |
1273 次 |
| 最近记录: |