带有单引号且不包含转义字符的JSON对象

时间:2019-04-03 19:14:57

标签: python json string

我试图从我实时接收的原始字符串中创建子对象进行处理。  我正在处理的字符串是:

{‘check_1’:{‘key_1’:15017.118,‘key_2’:’HTTPConnectionPool(host=‘host_1’, port=80): Read timed out. (read timeout=15)’,’key_3’:’Some reason here’}}

我正在尝试将双引号替换为类似的单引号

str = str.replace(",'", ',"').replace("',", '",')
str = str.replace(":'", ':"').replace("':", '":')
str = str.replace("{'", '{"').replace("'}", '"}')

但是当我执行key_2时,json.loads(str)的值引起了问题,因为key_2的值有多个单引号。

我想的一种方式是使用正则表达式进行反向传播。 还有其他方法可以将这种类型的字符串转换为子对象。

1 个答案:

答案 0 :(得分:1)

这种带有re库的快捷技巧似乎可以正常工作

import re
thestring = re.sub(r'[‘’]', '"', thestring) # don't call your variable str
thestring = re.sub(r'="(\S+)"', r"='\1'", thestring)
print( json.loads(thestring))