在python中将字符串作为列表对象处理

时间:2015-03-19 05:31:03

标签: python

我正在编写一个从命令行获取用户输入的python程序。用户被告知以列表格式输入值,即用户可能输入[1, 2], [2, 7], [4, 3]等。

我将此输入字符串拆分为", ",以便我的程序可以访问以下列表:

['[1, 2]', '[2, 7]', '[4, 3]']

有没有办法将每个“字符串列表”转换为实际列表?我不想拆分这些字符串并删除括号,提取值,并手动创建新列表。

谢谢!

2 个答案:

答案 0 :(得分:5)

由于您要求用户提供文字Python列表,因此您可以要求Python为您评估列表。 literal_eval()仅适用于文字,因此无法像使用eval()

那样将恶意操作放入输入中
>>> from ast import literal_eval
>>> literal_eval('[1, 2], [2, 7], [4, 3]')
([1, 2], [2, 7], [4, 3])                           #input was a tuple

>>> list(literal_eval('[1, 2], [2, 7], [4, 3]'))
[[1, 2], [2, 7], [4, 3]]

答案 1 :(得分:2)

import json
data = json.loads("[%s]" % user_input)

user_input是您的用户输入的str。在你的情况下它是

  

[1,2],[2,7],[4,3]

data就是你想要的 - 一个列表包含两个项目列表。