Python中如何将列表的列表格式字符串转为真实列表的列表?
把字符串形式的嵌套列表转换成Python列表的简便方法
遇到这种字符串格式的嵌套列表,其实有几个非常简便且安全的方法,我给你列两个最常用的:
方法一:使用ast.literal_eval()(首推!)
这个方法是Python标准库ast模块提供的,专门用来解析字符串形式的Python字面量(比如列表、字典、元组这类结构),核心优势是不会执行恶意代码,比直接用eval()安全太多。
举个实际例子,假设你拿到的字符串是这样的:
str_nested_list = "[[1, 2, 3], [4, 5, 6], ['apple', 'banana']]"
只需要几行代码就能完成转换:
import ast actual_list = ast.literal_eval(str_nested_list) print(type(actual_list)) # 输出 <class 'list'>,确认是列表类型 print(actual_list) # 输出 [[1, 2, 3], [4, 5, 6], ['apple', 'banana']]
不管嵌套列表里是数字、字符串还是混合类型,只要格式是合法的Python列表格式,这个方法都能完美解析。
方法二:使用json.loads()(适合标准JSON格式的字符串)
如果你的字符串是标准的JSON格式(比如所有字符串用双引号包裹),那用json模块的loads()方法也可行。不过要注意:JSON只认双引号,要是你的字符串里用的是单引号,得先把单引号替换成双引号再处理。
比如你的字符串是单引号版本:
str_nested_list = "[[1, 2], ['cat', 'dog']]"
转换代码如下:
import json # 先替换单引号为双引号,适配JSON格式要求 formatted_str = str_nested_list.replace("'", '"') actual_list = json.loads(formatted_str) print(actual_list) # 输出 [[1, 2], ['cat', 'dog']]
为什么不推荐直接用eval()?
虽然eval(str_nested_list)也能实现转换,但如果这个字符串来自不可信的来源(比如用户输入、网络消息),里面可能藏着恶意代码,eval()会直接执行,存在极大安全风险。所以强烈建议用上面两种更安全的方法。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

