我正在编写一个从命令行获取用户输入的python程序。用户被告知以列表格式输入值,即用户可能输入[1, 2], [2, 7], [4, 3]
等。
我将此输入字符串拆分为", "
,以便我的程序可以访问以下列表:
['[1, 2]', '[2, 7]', '[4, 3]']
有没有办法将每个“字符串列表”转换为实际列表?我不想拆分这些字符串并删除括号,提取值,并手动创建新列表。
谢谢!
答案 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
就是你想要的 - 一个列表包含两个项目列表。