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

不导入json模块将指定JSON字符串转为Python列表的实现方案

不使用json模块将JSON字符串转换为Python列表

首先,你提供的JSON字符串包含HTML转义的双引号("),需要先将其替换为标准双引号,之后可以使用Python内置的ast.literal_eval()方法完成转换——这个方法不需要导入json模块,且比直接用eval()更安全,因为它仅解析合法的Python字面量结构,不会执行任意代码。

实现代码

import ast

# 原始JSON字符串(包含HTML转义引号)
json_str = '[{"name":"Perm District","local_names":{"hr":"Perm","cs":"Perm","ca":"Perm","en":"Perm District","fr":"Perm","ro":"Perm","kn":"ಪೆರ್ಮ್","es":"Perm","pl":"Perm","ru":"Пермский городской округ","zh":"彼尔姆","ja":"ペルミ管区","feature_name":"Perm","pt":"Perm","de":"Stadtkreis Perm","lv":"Perma","et":"Perm","hi":"पॆर्म्","ko":"페름","uk":"Перм","fi":"Perm","ar":"دائرة المدينة بيرم","ku":"Perm","ascii":"Perm","hu":"Perm","oc":"Perm","lt":"Permė","sk":"Perm"},"lat":58.014965,"lon":56.246723,"country":"RU","state":"Perm Krai"}]'

# 替换HTML转义的双引号为标准双引号
cleaned_str = json_str.replace('"', '"')

# 使用ast.literal_eval转换为Python列表
result = ast.literal_eval(cleaned_str)

# 验证结果类型和内容
print(type(result))  # 输出: <class 'list'>
print(result[0]['name'])  # 输出: Perm District

关键说明

  • ast.literal_eval()是安全的替代方案:它只能解析Python的字面量结构(列表、字典、字符串、数字等),不会执行任何潜在危险的代码,避免了直接使用eval()带来的安全风险。
  • 处理HTML转义字符:原始字符串中的&quot;是HTML对双引号的转义表示,必须先替换为",否则ast.literal_eval()无法正确解析。
  • 兼容性:JSON的语法和Python的字面量语法高度兼容,因此这种方法可以处理绝大多数合法的JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:54:24