如何将字典列表格式的字符串转为列表?解决ast.literal_eval报错
解决JSON字符串转字典列表的语法错误问题
问题场景
你持有如下格式的字符串:
s = "\"[{\\\"type\\\": \\\"add\\\", \\\"qty\\\": \\\"24\\\", \\\"obj\\\": \\\"SPM\\\", \\\"location\\\": \\\"Piedmont Road.\\\"}]\""
目标是将其转换为字典列表:
[{"type": "add", "qty": "24", "obj": "SPM", "location": "Piedmont Road."}]
尝试使用 ast.literal_eval() 解析时,触发了 invalid syntax 错误。
问题原因
字符串最外层的双引号导致 ast.literal_eval() 无法识别合法的Python字面量——整个内容被当作一个带转义引号的普通字符串,而非包含字典的列表结构。
解决方法
先移除字符串首尾的双引号,再使用 ast.literal_eval() 解析即可正常运行:
import ast # 原始字符串 s = "\"[{\\\"type\\\": \\\"add\\\", \\\"qty\\\": \\\"24\\\", \\\"obj\\\": \\\"SPM\\\", \\\"location\\\": \\\"Piedmont Road.\\\"}]\"" # 移除首尾双引号 clean_str = s.strip('"') # 解析为字典列表 result = ast.literal_eval(clean_str) print(result) # 输出: [{'type': 'add', 'qty': '24', 'obj': 'SPM', 'location': 'Piedmont Road.'}]
内容的提问来源于stack exchange,提问作者Tallion 22
相关产品推荐
相关产品推荐

