python之json处理
2016-05-24 10:21
483 查看
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
以上是网上对json的解释,其实只要记住是一种轻量的数据交换格式就可以了,确实方便,可以把数据写入文件中,也可将数据当做字符串使用,但需要注意的是:
当然,最重要的还是需要先导入json模块:
字符串解析:
栗子:
文件解析:
文件内容:
解析:
其中,ensure_ascii=False表示不转编码,如果数据中有中文,没有ensure_ascii参数时,会转为乱码。indent为缩进,让数据看起来更有序,优雅的装逼法则。
排序:sort_keys=True,排序使数据看起来更有序,虽然字典的是无序的,然并卵。。。
结果:
以上是网上对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.Paste指南之Deploy(1)-概念
- Python实现二叉树结构与进行二叉树遍历的方法详解
- python callable()函数
- python静态网页爬虫之xpath(简单的博客更新提醒功能)
- arcgis9.3 执行python文件
- python之集合,函数,装饰器
- PYthon投票程序段以及sorted函数说明
- python中异常处理之esle,except,else
- Python爬虫和情感分析简介
- mysql-python
- Python中super
- python学习05-映射和集合类型
- pip的常用操作
- 关于用burp抓取python上网信息的使用方法
- Spark RDD操作(Python)总结
- Error generating Swagger server (Python Flask) from Swagger editor
- python 磁力链接搜索器
- win7 64 安装mysql-python:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
- python爬虫:案例三:去哪儿酒店价格信息
- 关于 Python Iterator 协议的一点思考