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

使用ast.literal_eval去除字符串外层单引号触发ValueError求助

问题分析与解决

错误原因

你遇到的ValueError是因为ast.literal_eval仅支持解析符合Python语法规范的字面量,而你的字符串里使用了JSON风格的小写布尔值false/true——在Python中,布尔值必须是大写开头的False/True,小写的false会被ast.literal_eval识别为未定义的变量名,从而触发解析错误。

解决方案

方案1:直接输出字符串(仅去除外层单引号)

如果你的需求只是去掉字符串外层的单引号,直接打印变量即可,无需解析:

a = '[{"M":{"Options":{"L":[{"M":{"Label":{"S":"5PCS "},"Selected":{"BOOL":false},"OptionId":{"S":"3080a2b2-2fd1-11ed-a261-0242ac120002"},"Price":{"N":"0"}}},{"M":{"Label":{"S":"8PCS"},"Selected":{"BOOL":false},"OptionId":{"S":"27f2148c-2fd1-11ed-a261-0242ac120002"},"Price":{"N":"600"}}}]},"Type":{"S":"multiple"},"Description":{"S":"PCS "},"Required":{"BOOL":true},"Max":{"S":"1"},"Index":{"N":"0"},"Remove":{"BOOL":false},"Selected":{"N":"0"}}}]'
print(a)

执行后会直接输出你期望的无外层单引号的字符串内容。

方案2:解析为Python对象

如果需要将字符串解析为可操作的Python对象,由于你的内容是标准JSON格式(双引号键、小写布尔值),应该使用json模块而非ast.literal_eval:

import json

a = '[{"M":{"Options":{"L":[{"M":{"Label":{"S":"5PCS "},"Selected":{"BOOL":false},"OptionId":{"S":"3080a2b2-2fd1-11ed-a261-0242ac120002"},"Price":{"N":"0"}}},{"M":{"Label":{"S":"8PCS"},"Selected":{"BOOL":false},"OptionId":{"S":"27f2148c-2fd1-11ed-a261-0242ac120002"},"Price":{"N":"600"}}}]},"Type":{"S":"multiple"},"Description":{"S":"PCS "},"Required":{"BOOL":true},"Max":{"S":"1"},"Index":{"N":"0"},"Remove":{"BOOL":false},"Selected":{"N":"0"}}}]'
parsed_data = json.loads(a)

# 若要输出格式化后的字符串,可使用json.dumps
print(json.dumps(parsed_data, indent=2))

这个方法会将字符串解析为Python列表/字典,同时保留所有原始数据结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:45:32