如何在Python数组中替换单引号为双引号且不改动JSON值内的单引号
解决Python对象转JSON时单引号替换问题
别用手动字符串替换的方式折腾,直接用Python内置的json模块序列化你的managable数组,这是最稳妥的方案,能自动处理所有JSON格式要求,包括布尔值、空值的转换,还能精准区分键的引号和值内的单引号。
修改后的代码
import requests import json # 获取 guilds 数据 r = requests.get("https://discord.com/api/v8/users/@me/guilds", headers = { "Authorization": f"Bearer {access_token}" }) guilds = r.json() managable = [] for guild in guilds: if int(guild["permissions"]) & 32 != 0: managable.append(guild) # 直接生成标准JSON字符串 strmanagable = json.dumps(managable)
效果说明
json.dumps()会自动把Python的True转成JSON的true,False转成false,None转成null,完全不需要手动替换。- 所有JSON键会自动使用双引号,值内的单引号会被自动转义(比如
'something'会变成"\'something\'"),这是标准JSON允许的格式,后续解析时会正确还原原始的单引号内容。
为什么手动替换不可行
你之前用str(managable)把Python列表转成字符串,本质是生成Python语法的字符串表示,而非标准JSON格式。直接替换单引号无法区分键的引号和值内的引号,必然会破坏值里的内容。而json模块是专门为Python对象与JSON格式转换设计的,能处理嵌套结构、特殊字符等所有边缘情况。
内容的提问来源于stack exchange,提问作者Levente
相关产品推荐
相关产品推荐

