【发布时间】:2020-11-01 20:31:27
【问题描述】:
我正在发出 Python API 获取请求并获取我在字符串中捕获的 JSON 结果。该字符串类似于包含字典的字符串文字:{'key1': 4, 'key2': 'I\'m home'}。我需要将其格式化为包含正确 JSON 对象的字符串文字,如下所示:{"key1": 4, "key2": "I\'m home"},以便我可以保存到 JSON 文件。
为此,我尝试使用带有negative look-ahead 的正则表达式来替换所有单引号(转义单引号除外),如下所示:
import re
#.... other codes
str = re.sub("'(!?\')", "\"", result) # result = "{'key1': 4, 'key2': 'I\'m home'}"
print (str)
但我得到了这个输出
{"key1": 4, "key2": "I"m home"}
而不是
{"key1": 4, "key2": "I\'m home"}
如何创建正则表达式,以便保留转义的单引号 \',并将所有其他引号替换为双引号。
【问题讨论】:
-
所以你得到的不是 JSON 的 JSON 结果?
-
result = requests.get(url).json()。我从 Pythonrequests.get()对象方法获得结果,该方法名为json()。但是结果是用单引号中的键返回的,当我将它复制到 json 文件时,Visual Studio 代码报告它不是正确的 json。 -
这能回答你的问题吗? HTTP requests and JSON parsing in Python
-
看来你什么都不用做,
requests.get(url).json()已经解码JSON并返回一个Python数据结构。 -
您可以使用
import json; json.dumps(result)将其编码回JSON字符串,如果这是您想要的。或者您可以跳过解码并直接返回 JSON 字符串,而是使用requests.get(url).raw。
标签: python json python-requests python-re