当前位置: 首页 > news >正文

python string indices must be_Python解析json时提示“string indices must be integers”问题解决方法...

本文实例讲述了Python解析json时提示“string indices must be integers"问题解决方法。分享给大家供大家参考,具体如下:

import json,但是出现了一个奇怪的问题:

string indices must be integers

这个错误告诉我,[ ]里面应该是数字而不是字符串,但是dict使用key访问也可以,这种错误感觉解析出来的结果像是一个list。

所以考虑是字符串解析的问题。打印解析的结果,是一长串的字符串,一堆的key挤在一起,value都缺失了。再打印原始的字符串,发现了一些细节,key并没有被双引号包围,类似于'{a:"abcde",b:"abcde"}'。

好吧,这是一个不符合json规范的字符串,要处理它,可以使用正则表达式转换成规范的key再解析或者使用其他功能更加强大的库——demjson。

pip install demjson,解决。

json的用法:

import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = json.dumps(data)

print json

结果为:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]

import json

jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = json.loads(jsonData)

print text

结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

demjson的用法:

import demjson

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = demjson.encode(data)

print json

结果为:

[{"a":1,"b":2,"c":3,"d":4,"e":5}]

import demjson

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = demjson.decode(json)

print text

结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

import demjson

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = demjson.encode(data)

print json

结果为:

[{"a":1,"b":2,"c":3,"d":4,"e":5}]

import demjson

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = demjson.decode(json)

print text

结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

PS:这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具:http://tools.ddpool.cn/code/json

JSON在线格式化工具:http://tools.ddpool.cn/code/jsonformat

在线XML/JSON互相转换工具:http://tools.ddpool.cn/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:http://tools.ddpool.cn/code/jsoncodeformat

在线json压缩/转义工具:

http://tools.ddpool.cn/code/json_yasuo_trans

更多Python相关内容感兴趣的读者可查看本站专题:《Python操作json技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

相关文章:

  • SSIS:用foreach loop将一个目录下的内容导入到数据库中
  • 必须声明标量变量 @sum_level。_C++ Primer 笔记 - 变量
  • JAVA 中URL链接中文参数乱码的处理方法
  • 宝乐机器人集团作_「驰众机器人|情报」秦川集团起草的《机器人用精密摆线齿轮减速器》标准获发布...
  • java读取xml文件操作
  • 5ecsgo启动失败2错误代码2_Spring Boot 2.2 增加了一个新功能,启动飞起~
  • 现代科技概论_现代科技概论课程:力与运动3
  • 负载均衡技术全攻略
  • opencv图像分割python毕业设计_python用opencv完成图像分割并进行目标物的提取
  • SOA将使C++在2008年重现活力
  • 邮件合并保存为一个个单独的文档_巧用WPS“邮件合并”功能,让工作更加高效...
  • CIO构建网络整体安全解决方案
  • 微信小程序超级占内存_实测:微信小程序占多少内存?或许真没有你想象的那么“小”!...
  • 创新与价值
  • matlab如何求指标的权向量_层次分析法中,求出矩阵最大特征值对应的特征向量,再分别平方就是权向量么用matl......
  • 收藏网友的 源程序下载网
  • android 一些 utils
  • css的样式优先级
  • extract-text-webpack-plugin用法
  • httpie使用详解
  • MySQL数据库运维之数据恢复
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python 反序列化安全问题(二)
  • select2 取值 遍历 设置默认值
  • 不上全站https的网站你们就等着被恶心死吧
  • 对超线程几个不同角度的解释
  • 如何选择开源的机器学习框架?
  • 跳前端坑前,先看看这个!!
  • 微服务核心架构梳理
  • 译自由幺半群
  • MyCAT水平分库
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​TypeScript都不会用,也敢说会前端?
  • #Spring-boot高级
  • (3)(3.5) 遥测无线电区域条例
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C#)一个最简单的链表类
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (done) 两个矩阵 “相似” 是什么意思?
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (多级缓存)多级缓存
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (转)EOS中账户、钱包和密钥的关系
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)Linux 多线程条件变量同步
  • .NET Core 成都线下面基会拉开序幕
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 设计一套高性能的弱事件机制
  • .NET 事件模型教程(二)
  • .NET上SQLite的连接
  • .net中生成excel后调整宽度
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798