You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将嵌套列表字符串用pandas或简单方法转为真实列表

字符串格式嵌套列表转Python真实列表(无正则新手友好方案)

核心思路

你的bound_box列的字符串格式高度规整,仅靠普通字符串替换就能转成合法Python表达式,再用Python标准库ast.literal_eval安全转换为真实列表结构,全程不需要正则表达式,代码简单易理解。其中ast.literal_eval是Python官方推荐的安全转换方法,只会解析合法的Python基础数据结构,不会执行恶意代码,比直接用eval安全很多。

实现步骤

1. 导入依赖库

都是Python和pandas自带的库,无需额外安装:

import pandas as pd
import ast

2. 编写转换函数

def str_to_list(box_str):
    # 去除字符串外层的单引号
    box_str = box_str.strip("'")
    # 三步字符串替换,转成合法Python字典格式
    box_str = box_str.replace('=', "':")
    box_str = box_str.replace('{', "{'")
    box_str = box_str.replace(', ', ", '")
    # 安全转换为真实的列表嵌套字典结构
    return ast.literal_eval(box_str)

3. 应用到pandas列

# 把bound_box列从字符串转成真实列表
df['bound_box'] = df['bound_box'].apply(str_to_list)

4. 展开列表项(最终需求)

用pandas自带的explode方法即可把列表的每个元素拆成单独行:

# 展开bound_box列表,得到每行一个字典的结构
df_exploded = df.explode('bound_box', ignore_index=True)

# 可选:如果需要把字典里的width、x等字段拆成单独列,再加一步
df_final = pd.json_normalize(df_exploded['bound_box']).join(df_exploded.drop('bound_box', axis=1))

效果验证

转换前的bound_box列值为字符串:'[{width=0.05, x=0.46879336, growth_state=EARLY}]'
转换后为真实Python列表:[{ 'width': 0.05, 'x': 0.46879336, 'growth_state': 'EARLY' }]
空字符串'[]'转换后会得到空列表[],展开后会自动忽略空行。

内容的提问来源于stack exchange,提问作者Amit Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:06:03