# 解决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)  # 解码
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()

你可能感兴趣的:(# 解决TypeError: string indices must be integers, not str ##)