如何将含嵌套数组格式字符串的数组转换为Python列表?
可行解决方案
方案一:使用ast.literal_eval解析(推荐)
Python的ast模块提供的literal_eval方法,专门用于解析Python字面量结构(列表、字典、元组等),且不会执行任意代码,安全性远高于eval。直接处理你的输入即可:
import ast # 你的输入数据 input_array = ["[['plane1.png', '[-1.0, -1.0, 0.9999999999999999, -1.4501078562170397, -3.0908559322343176, 2.7628911124920634]'], ['plane1.png', '[-1.0, -1.0, 0.9999999999999999, -1.4501078562170397, -3.0908559322343176, 2.7628911124920634]'], ['plane1.png', '[-1.0, -1.0, 0.9999999999999999, -1.4501078562170397, -3.0908559322343176, 2.7628911124920634]']]"] # 取出数组中的字符串元素 target_str = input_array[0] # 解析为Python列表 result_list = ast.literal_eval(target_str) # 验证结果 print(type(result_list)) # 输出 <class 'list'> print(result_list)
方案二:进一步解析嵌套的数字字符串
如果需要把每个子项中的数字字符串也转换成真正的列表,可嵌套使用ast.literal_eval:
import ast input_array = ["[['plane1.png', '[-1.0, -1.0, 0.9999999999999999, -1.4501078562170397, -3.0908559322343176, 2.7628911124920634]'], ['plane1.png', '[-1.0, -1.0, 0.9999999999999999, -1.4501078562170397, -3.0908559322343176, 2.7628911124920634]'], ['plane1.png', '[-1.0, -1.0, 0.9999999999999999, -1.4501078562170397, -3.0908559322343176, 2.7628911124920634]']]"] target_str = input_array[0] raw_list = ast.literal_eval(target_str) # 处理嵌套的数字字符串 final_list = [[item[0], ast.literal_eval(item[1])] for item in raw_list] print(final_list)
原方法失败的原因
你之前使用的np.fromstring是numpy提供的数值解析工具,仅能从纯数值字符串中提取数据并转换为numpy数组,无法处理包含字符串、嵌套列表的复杂结构化字符串,因此不适用当前场景。
内容的提问来源于stack exchange,提问作者Rebecca Fogazzi
相关产品推荐
相关产品推荐

