我试图从我实时接收的原始字符串中创建子对象进行处理。 我正在处理的字符串是:
{‘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
的值有多个单引号。
我想的一种方式是使用正则表达式进行反向传播。 还有其他方法可以将这种类型的字符串转换为子对象。
答案 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))