Python中如何将列表内字符串形式的列表转换为真实列表?
解决字符串嵌套列表转真实列表的问题
你可以通过以下几种方法将字符串形式的子列表转换为真实的Python嵌套列表:
方法一:使用ast模块(推荐)
ast.literal_eval是安全解析Python字面量的工具,不会执行任意代码,适合处理这类场景:
import ast original_list = ["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"] converted_list = [ast.literal_eval(item) for item in original_list] print(converted_list)
执行后会输出:
[[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793], [21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]]
方法二:使用json模块
由于JSON格式要求字符串用双引号,先将子列表字符串中的单引号替换为双引号,再用json.loads解析:
import json original_list = ["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"] converted_list = [] for item in original_list: json_str = item.replace("'", '"') converted_list.append(json.loads(json_str)) print(converted_list)
注意:如果子列表的字符串内容本身包含单引号(比如'I'm test'),这种替换会出错,此时优先用ast方法。
方法三:使用eval(不推荐)
eval可以直接执行字符串中的Python代码,但如果输入数据来自不可信来源,会存在安全风险,仅在你完全确认数据安全时使用:
original_list = ["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"] converted_list = [eval(item) for item in original_list] print(converted_list)
内容的提问来源于stack exchange,提问作者KawaiKx
相关产品推荐
相关产品推荐

