解决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)  # 解码
1 2 json.dump主要用来将python对象写入json文件
点击查看代码
f = open('demo.json','w',encoding='utf-8')
json.dump(decode_json,f,ensure_ascii=False)
f.close()
1 2 3 json.load加载json格式文件,返回python对象
点击查看代码
f = open('demo.json','r',encoding='utf-8')
data = json.load(f)
print(data,type(data))
f.close()
posted @   赏金猎人小熊  阅读(2249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示