Skip to main content
 首页 » 编程设计

python之提取嵌入在python中的字符串中的多个列表

2025年05月04日37yyy_WW

我有如下字符串:

"sring = [[61252,'1','1','30000','2617','2677','15000','1'],[61252,'2','2','72590','2615','2678','15000','1'],[61252,'3','1','9354','2608','2690','709','1']]" 

我想将其转换为常规列表,例如:

list = [[61252,'1','1','30000','2617','2677','15000','1'],[61252,'2','2','72590','2615','2678','15000','1'],[61252,'3','1','9354','2608','2690','709','1']] 

然后我可以解析它或做任何可以用列表做的事情。 我尝试拆分字符串,但它不起作用,因为结果是一个字符串。

我什至尝试使用 exec 函数转换它:

exec('func = lambda : {}; func()').string 

但是它没有返回任何东西。 有什么(干净的)方法可以将这种字符串转换为适当的列表吗?

请您参考如下方法:

使用literal_eval在围绕 = 拆分字符串之后。请密切注意 = 后面的额外空格,因为这是确保 literal_eval 能够正确处理传递的字符串结构所必需的。否则你将面临异常 IndentationError: unexpected indent

解决方法:

from ast import literal_eval 
 
s = "sring = [[61252,'1','1','30000','2617','2677','15000','1'],[61252,'2','2','72590','2615','2678','15000','1'],[61252,'3','1','9354','2608','2690','709','1']]" 
 
res = literal_eval(s.split('= ')[1]) 
print(res) 
print(type(res)) 

输出:

[[61252, '1', '1', '30000', '2617', '2677', '15000', '1'], [61252, '2', '2', '72590', '2615', '2678', '15000', '1'], [61252, '3', '1', '9354', '2608', '2690', '709', '1']] 
<class 'list'> 

额外注意:我注意到您在示例中将列表分配给了一个名为list 的变量。请注意,list 是 Python 中的内置名称,将其用作变量名称会影响内置名称,并可能导致代码出现问题。