irpas技术客

解决TypeError: string indices must be integers, not str_李梨同学丶

大大的周 5184

遇到问题 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) # 解码 json.dump主要用来将python对象写入json文件 f = open('demo.json','w',encoding='utf-8') json.dump(decode_json,f,ensure_ascii=False) f.close() json.load加载json格式文件,返回python对象 f = open('demo.json','r',encoding='utf-8') data = json.load(f) print(data,type(data)) f.close()


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #解决TypeError #string #indices #must #be #integers #not