还有其他一些线程可以将列表中的字符串转换为不同的数据类型。我想将列表形式的字符串转换为列表。像这样:"[5,1,4,1]" = [5,1,4,1]
我需要这个,因为我正在编写一个程序,要求用户输入列表
问题示例:
>>> x = input()
[3,4,1,5]
>>> x
'[3,4,1,5]'
>>> type(x)
<class 'str'>
答案 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