如何将字符串列表转换为列表?

时间:2014-04-25 03:49:58

标签: python-3.x

还有其他一些线程可以将列表中的字符串转换为不同的数据类型。我想将列表形式的字符串转换为列表。像这样:"[5,1,4,1]" = [5,1,4,1]

我需要这个,因为我正在编写一个程序,要求用户输入列表

问题示例:

>>> x = input()
[3,4,1,5]
>>> x
'[3,4,1,5]'
>>> type(x)
<class 'str'>

4 个答案:

答案 0 :(得分:0)

如果你的意思是评估这样的python对象:

x = eval('[3,4,1,5]');
print (x);
print(type(x) is list)

[3, 4, 1, 5]
True

谨慎使用它,因为它可以执行用户输入的任何内容。更好地使用解析器来获取本机列表。使用JSON进行输入并解析它。

答案 1 :(得分:0)

eval()用于您的目的。 eval()用于将字符串中的代码转换为实际代码:

>>> mystring = '[3, 5, 1, 2, 3]'
>>> mylist = eval(mystring)
>>> mylist
[3, 5, 1, 2, 3]
>>> mystring = '{4: "hello", 2:"bye"}'
>>> eval(mystring)[4]
'hello'
>>> 

使用exec()实际运行功能:

>>> while True:
...     inp = raw_input('Enter your input: ')
...     exec(inp)
... 
Enter your input: print 'hello'
hello
Enter your input: x = 1
Enter your input: print x
1
Enter your input: import math
Enter your input: print math.sqrt(4)
2.0

在您的方案中:

>>> x = input()
[3,4,1,5]
>>> x = eval(x)
>>> x
[3, 4, 1, 5]
>>> type(x)
<type 'list'>
>>>

答案 2 :(得分:0)

感谢您的输入人员,但我不想eval()因为它不安全。

实际上有人发布了答案,允许我解决这个问题,但后来他们删除了它。我将重新发布回复:

values = input("Enter values as lists here")
l1 = json.loads(values)

答案 3 :(得分:0)

您可以将ast.literal_eval用于此目的。

  

安全地评估表达式节点或包含Python的字符串   表达。提供的字符串或节点可能只包含   以下Python文字结构:字符串,字节,数字,元组,   列表,字符串,集合,布尔值和无。

     

这可以用于安全地评估包含Python的字符串   来自不受信任来源的表达式,无需解析   重视自己。

>>> import ast
>>> val = ast.literal_eval('[1,2,3]')
>>> val
[1, 2, 3]

请记住检查它实际上是一个列表:

>>> isinstance(val, list)
True