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

如何在Python中从字符串的指定字符内提取元素生成列表?

如何将格式为{'abc', 'def'}的字符串转为列表?

针对你这个场景,最优的实现方式肯定是用Python的ast模块里的literal_eval函数——这是最可靠、最通用的方法,完全不用操心字符串长度或者元素数量变化的问题。

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

这个函数可以安全地解析Python字面量(比如集合、列表、字典这些),而且不会像eval()那样有执行恶意代码的风险。具体代码如下:

import ast

# 注意这里用双引号包裹字符串,避免内部单引号的冲突
s = "{'abc', 'def'}"
# 先把字符串解析为集合,再转成列表
L = list(ast.literal_eval(s))
print(L)  # 输出: ['abc', 'def']

不管你的字符串里有多少个元素,只要它是合法的Python集合字面量格式,这个方法都能正确处理——哪怕元素里包含特殊字符(比如"a'b"或者"x, y"),只要符合Python的字符串语法,都不会出错。

方法二:手动字符串处理(仅适用于简单场景)

如果你不想导入模块,也可以手动处理字符串,但这种方法局限性很大,只适合元素里没有逗号、单引号的简单情况:

s = "{'abc', 'def'}"
# 1. 去掉首尾的大括号
# 2. 按', '分割成单个元素字符串
# 3. 去掉每个元素首尾的单引号
L = [item.strip("'") for item in s.strip('{}').split(', ')]
print(L)  # 输出: ['abc', 'def']

但如果你的元素里包含, 或者单引号(比如元素是"hello, world"或者"it's me"),这个方法就会直接解析错误,所以不推荐在复杂场景下使用。

总结一下:优先用ast.literal_eval,它是处理这类Python字面量字符串转对象的最优解,通用性和安全性拉满。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:20:42