解决TypeError: string indices must be integers, not str
点击查看代码
ExtendValue = {
"area": "1",
"info": "{\"year\": 2014, \"a\": 12, \"b\": 3, \"c\":5}",
"trip_country": "CN"
}
在按照字典访问的时候,报错。TypeError: string indices must be integers, not str,意思是索引必须是int型不能是字符型。
错误原因
(出这种错误有多种可能,我只记录我遇到的)
经查找发现,是json格式导致的错误,info的value是json数据,python无法直接识别。
解决办法
原来字典存储的对象是json,因此需要把json反解码后才可以读取。
要json.loads(),才能把json格式转为python识别的格式。
加上一行代码:
点击查看代码
ExtendValue["info"]=json.loads(ExtendValue["info"])
拓展
Python json 模块dumps、dump、loads、load的使用
json.dumps将python对象格式化成json字符(将dict转化成str)
json.loads将json字符串解码成python对象(将str转化成dict)
点击查看代码
json_str = json.dumps(data) # 编码
data = json.loads(json_str) # 解码
点击查看代码
f = open('demo.json','w',encoding='utf-8')
json.dump(decode_json,f,ensure_ascii=False)
f.close()
点击查看代码
f = open('demo.json','r',encoding='utf-8')
data = json.load(f)
print(data,type(data))
f.close()