python之json处理
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
以上是网上对json的解释,其实只要记住是一种轻量的数据交换格式就可以了,确实方便,可以把数据写入文件中,也可将数据当做字符串使用,但需要注意的是:
1.字符串输入json时,对元素需要使用双引号,单引号容易出错
2.数据写入文件时,需要注意圆括号,也叫小括号,使用json.dump()默认会将有序排列转化为列表存入json文件,所以如果你的数据中有元组的话需要注意这一点
3. json 字符串内部的字典、列表中的元素,如果是字符串的话,必须用双引号
当然,最重要的还是需要先导入json模块:
import json
字符串解析:
json.dumps() #编码:把一个Python对象编码转换成Json字符串
json.loads() #解码:把Json格式字符串解码转换成Python对象
栗子:
add_contect_str=‘{"backend": "www.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 3000}}’
add_contect=json.loads(add_contect_str)
search_info=add_contect['backend']
weight=add_contect['record']['weight']
server=add_contect['record']['server']
maxconn=add_contect['record']['maxconn']
文件解析:
文件内容:
{
"汽车": {
"BMW X3": {
"price": 499999,
"stock": 399,
"belong": "汽车"
},
"PASST": {
"price": 299999,
"stock": 297,
"belong": "汽车"
},
"Tesla Model S": {
"price": 799999,
"stock": 3000,
"belong": "汽车"
},
"Porsche 911": {
"price": 2999999,
"stock": 594,
"belong": "汽车"
}
},
"手机": {
"锤子2(这特么真是手机)": {
"price": 998,
"stock": 2994,
"belong": "手机"
},
"华为Mate": {
"price": 2999,
"stock": 5996,
"belong": "手机"
},
"Iphone": {
"price": 5888,
"stock": 2998,
"belong": "手机"
},
"XiaoMi 4": {
"price": 1999,
"stock": 5396,
"belong": "手机"
}
},
"服装": {
"小白鞋": {
"price": 900,
"stock": 5964,
"belong": "服装"
},
"T恤": {
"price": 300,
"stock": 892,
"belong": "服装"
},
"驴牌腰带": {
"price": 9999,
"stock": 2999,
"belong": "服装"
},
"Nudie牛仔裤": {
"price": 699,
"stock": 3978,
"belong": "服装"
}
},
"电脑": {
"Mac Air": {
"price": 6999,
"stock": 6002,
"belong": "电脑"
},
"Mac pro": {
"price": 9999,
"stock": 3995,
"belong": "电脑"
},
"IBM X240": {
"price": 6999,
"stock": 3003,
"belong": "电脑"
},
"Surface Book": {
"price": 8999,
"stock": 3020,
"belong": "电脑"
}
},
"家电": {
"洗衣机": {
"price": 999,
"stock": 597,
"belong": "家电"
},
"彩电": {
"price": 5000,
"stock": 398,
"belong": "家电"
},
"微波炉": {
"price": 800,
"stock": 2995,
"belong": "家电"
},
"冰箱": {
"price": 3000,
"stock": 300,
"belong": "家电"
},
"热水器": {
"price": 600,
"stock": 900,
"belong": "家电"
}
}
}
解析:
user_info=json.load(open('user_info','r')) #读数据
json.dump(goods,open('goods_info','w'),ensure_ascii=False,indent=1) #写入数据
其中,ensure_ascii=False表示不转编码,如果数据中有中文,没有ensure_ascii参数时,会转为乱码。indent为缩进,让数据看起来更有序,优雅的装逼法则。
排序:sort_keys=True,排序使数据看起来更有序,虽然字典的是无序的,然并卵。。。
import json
data1 = {'b':789,'c':456,'a':123}
data2 = {'a':123,'b':789,'c':456}
d1 = json.dumps(data1,sort_keys=True)
d2 = json.dumps(data2)
d3 = json.dumps(data2,sort_keys=True)
print(d1)
print(d2)
print(d3)
print(d1==d2)
结果:
{"a": 123, "b": 789, "c": 456}
{"c": 456, "b": 789, "a": 123}
{"a": 123, "b": 789, "c": 456}
False
[Finished in 0.1s]
python之json处理的更多相关文章
- Json概述以及python对json的相关操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- python 序列化 json pickle
python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...
- Python处理json格式的数据文件(一些坑、一些疑惑)
这里主要说最近遇到的一个问题,不过目前只是换了一种思路先解决了,脑子里仍然有疑惑,只能怪自己太菜. 最近要把以前爬的数据用一下了,先简单的过滤一下,以前用scrapy存数据的时候为了省事也为了用一下它 ...
- Python处理JSON
从开源中国的博客搬来,合并博客 一.JSON是什么? JSON是一种轻量级的数据交换格式 二.Python处理JSON的思维 其实很容易理解,无非是将数据编成JSON格式数据和吧JSON格式的数据解析 ...
- Python处理JSON数据
python解析json时为了方便,我们首先安装json模块,这里选择demjson,官方网址是:http://deron.meranda.us/python/demjson/ 访问之后点击页面的的D ...
- Json概述以及python对json的相关操作(转)
什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
- python 格式化 json输出
利用python格式化json 字符串输出. $ echo '{"json":"obj"}' | python -m json.tool 利用python -m ...
- python解析json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 引用 import json 编码:把一个Python对象编码转换成Json字符串 json.dumps ...
- python 解析json loads dumps
认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...
随机推荐
- git 和 svn比较
SVN和Git 介绍,区别,优缺点,适用范围总结 原创 2016年01月29日 15:17:36 15774 介绍 SVN SVN是Subversion的简称,是一个开放源代码的版本控制系统, ...
- redis--基于内存的高速缓存,NoSql的典型代表
NoSql入门和概述 入门概述 为什么要使用NoSql? 1.单机mysql的美好年代 在早些年以前,那时候网站的访问量不大,用单个数据库完全可以应付.而且那个时候,绝大部分都是LAMP架构:Linu ...
- 关于https的五大误区
如今,https协议正在被广泛重视和使用.随着今年2月初,谷歌旗下Chrome浏览器宣布将所有http标示为不安全网站,许多网站都争相从http升级到了https.当你打开很多网站时,会发现浏览器左上 ...
- 树状数组例题-数星星,简单题easy,校门外的树2,清点人数
[例1]数星星 天空中有一些星星,这些星星都在不同的位置,每个星星都有个坐标,如果一个星星的左下方(包括正左和正下)有k颗星星,就说这颗星星是k级的. 比如,上图中,星星5是3级的(1,2,4在其左下 ...
- sql server 常见约束
1.not null 非空约束 ①强制列不接受空值 ②例:创建表时,name varchar(6) not null, 2.unique 唯一性约束 ①约束唯一标识数据库表中的每条记录 ②unique ...
- Vin2008 X64安装.Net Framework1.1
http://www.iis.net/learn/install/installing-iis-7/how-to-install-aspnet-11-with-iis-on-vista-and- ...
- Linux swap的创建与配置
在Linux下,swap的作用类似Windows系统下的“虚拟内存”.当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况.Linux下的swap有两种实现形 ...
- laravel-china 镜像停止服务
php 的很多开发都会用到composer.然后国内的镜像又慢,很多人会选择用laravel-china的镜像. 之前一直用的很好.今天突然发现不能composer update.出现报错.WTF!! ...
- vue中引入Tinymce富文本编辑器
最近想在项目上引入一个富文本编辑器,之前引入过summernote,感觉并不太适合vue使用, 然后在网上查了查,vue中使用Tinymce比较适合, 首先,我们在vue项目的components文件 ...
- BP神经网络原理及在Matlab中的应用
一.人工神经网络 关于对神经网络的介绍和应用,请看如下文章 神经网络潜讲 如何简单形象又有趣地讲解神经网络是什么 二.人工神经网络分类 按照连接方式--前向神经网络.反馈(递归)神经网络 按照 ...