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

Python如何解析包含多个列表的字符串并读取指定元素

问题说明

现有待解析字符串如下:

test_str = "['A', 'B', 'C'] ['D', 'E', 'F']"

尝试使用json.load、ast.literal_eval直接解析均失败,需要实现快速解析,满足如下调用效果:

parse = test_str.some_function()
print(parse[0][2])

预期输出:C


实现方案

失败原因说明

  • json相关解析方法失效:JSON规范要求字符串必须使用双引号,且待解析内容是两个数组直接拼接,既不符合JSON语法要求,也不存在合法的整体结构。
  • 直接调用ast.literal_eval失效:原字符串是两个独立的Python列表字面量连续拼接,不属于单个合法的Python字面量结构,解释器无法直接识别。

最简实现

只需要补全字符串缺失的结构分隔符和外层包裹,就可以直接用ast.literal_eval一次性解析,无代码注入风险,完全适配当前场景:

import ast

test_str = "['A', 'B', 'C'] ['D', 'E', 'F']"
# 补全列表间分隔符,外层套列表构造合法二维列表字面量
parse = ast.literal_eval(f"[{test_str.replace('] [', '], [')}]")

print(parse[0][2]) # 输出结果 C

如果列表之间存在不定数量的空格、换行分隔,可以用正则做兼容替换,适配更多格式:

import ast
import re

test_str = "['A', 'B', 'C'] ['D', 'E', 'F']"
# 匹配右括号和左括号之间的任意空白字符做替换
parse = ast.literal_eval(f"[{re.sub(r'\]\s*\[', '], [', test_str)}]")

该方法对3个及以上连续拼接的列表同样有效,替换后均可直接解析为标准二维列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:39:28