Python中如何将字符串形式的字典转换为字典类型?
解决HTML转义JSON字符串转Python字典的问题
为什么dict(test)会报错?
dict()函数需要传入键值对序列(比如[(k1, v1), (k2, v2)]这种格式),但你传入的是带HTML转义的JSON格式字符串。直接用dict()处理字符串时,函数会把字符串拆成单个字符遍历,每个字符是长度为1的元素,不符合字典要求的键值对格式,因此触发ValueError。
正确的转换步骤
你的字符串里的"是HTML转义后的双引号,需要先转成普通双引号,再用json模块解析成字典:
方法一:直接替换转义字符
import json # 你的原始字符串 test = '{"age":59.0,"bp":70.0,"sg":1.01,"al":3.0,"su":0.0,"rbc":1.0,"ba":0.0,"bgr":76.0,"bu":186.0,"sc":15.0,"sod":135.0,"pot":7.6,"hemo":7.1,"pcv":22.0,"wbcc":3800.0,"rbcc":2.1,"htn":1.0,"dm":0.0,"cad":0.0,"appet":0.0,"pe":1.0,"ane":1.0}' # 替换HTML转义引号为普通双引号 cleaned_str = test.replace('"', '"') # 解析为字典 result_dict = json.loads(cleaned_str) # 验证结果 print(type(result_dict)) # 输出 <class 'dict'> print(result_dict["age"]) # 输出 59.0
方法二:用html模块处理所有HTML转义(更通用)
如果字符串里还有其他HTML转义字符(比如&等),可以用html.unescape()一次性处理所有转义:
import json import html test = '{"age":59.0,...}' # 你的原始字符串 cleaned_str = html.unescape(test) result_dict = json.loads(cleaned_str)
内容的提问来源于stack exchange,提问作者Samar Pratap Singh
相关产品推荐
相关产品推荐

