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

如何将含字符串化嵌套列表的列表处理为目标格式?

处理包含字符串化嵌套列表的Python列表

给定初始列表:

before = ['Vicente, Piura, Perú', 'Escobar, Buenos Aires, Argentina', "['San Juan, Argentina', 'California, Estados Unidos de América']"]

需要将其中的字符串化嵌套列表展开,得到目标列表:

after = ['Vicente, Piura, Perú', 'Escobar, Buenos Aires, Argentina', 'San Juan, Argentina', 'California, Estados Unidos de América']

方法一:使用ast.literal_eval(推荐)

ast.literal_eval可以安全解析字符串形式的Python数据结构,不会执行恶意代码,是处理这类场景的最优解。

代码实现:

import ast

before = ['Vicente, Piura, Perú', 'Escobar, Buenos Aires, Argentina', "['San Juan, Argentina', 'California, Estados Unidos de América']"]
after = []
for item in before:
    # 尝试解析为列表,失败则直接保留原元素
    try:
        parsed = ast.literal_eval(item)
        if isinstance(parsed, list):
            after.extend(parsed)
        else:
            after.append(item)
    except (ValueError, SyntaxError):
        after.append(item)

print(after)

该方法能适配各种合法的字符串化列表格式,包括包含特殊字符的元素。

方法二:字符串手动处理(仅适用于简单固定格式)

如果不想引入模块,可以通过字符串替换和分割实现,但局限性大,仅适合元素内无, (逗号加空格)的场景:

before = ['Vicente, Piura, Perú', 'Escobar, Buenos Aires, Argentina', "['San Juan, Argentina', 'California, Estados Unidos de América']"]
after = []
for item in before:
    if item.startswith('[') and item.endswith(']'):
        # 移除首尾括号,分割元素后清理引号和空格
        elements = [elem.strip().strip("'\"") for elem in item[1:-1].split(', ')]
        after.extend(elements)
    else:
        after.append(item)

print(after)

注意:若元素本身包含, ,比如'New York, NY, Estados Unidos',这种方法会错误拆分元素,因此优先选择第一种方案。


内容的提问来源于stack exchange,提问作者Colton Seegmiller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:14:55