前两篇分享了文件的使用和一二维数据的处理的方法,上篇也分享了csv标准库来处理csv类二维数据处理方法,这次分享高维数据处理方法——采用json标准库的处理方法。
首先要清楚JSON(JavaScript Object Notation)格式类型文件的高维数据是什么样子!!
"文章简介":
[
{"标签":"python",
"类型":"原创"}
{"内容":"json库"
}
]
可以看出是由一个个键值对集合组成的数组
同类的还有XML格式类型文件!!
<文章简介>
<标签>python</标签><类型>原创</类型>
<内容>json库</内容>
</文章简介>
什么是json库?
json库的简介
json库是用来处理JSON格式类型文件的标准库。
JSON的要求:
1.数据在名称/值对中,键值对都在双引号中,值可以是(字符串, 数字, 对象, 数组, 布尔值或 null)
2.数据由逗号分隔
3.大括号 {} 保存对象
4.中括号 [] 保存数组,数组可以包含多个对象
json库的使用
json库主要包含两类函数:操作类函数和解析类函数
操作类函数:主要完成外部JSON格式类型文件与程序内部数据类型之间的住转换
解析类函数:主要解析键值对的内容,JSON格式中的对象别解析为字典,数组被解析为列表
json库操作额两个过程以及对应的操作类函数:编码(encoding)、解码(decoding)
引入标准库:import json
编码(encoding):将python类型的数据转换为JSON类型的数据
josn.dumps(obj,sort_keys=False,indent=None)
josn.dump(obj,fp,sort_keys=False,indent=None)
obj:是python数据中的列表或者字典类型
sort_keys:可以按照key排序
indent:用于增加数据缩进,增加可读性
fp:编码保存到fp文件中
import json
date = {'d':'4','a':'1','c':'3','b':'2'}
fp = open("D:/日常文件/0001.json",'w')
print(json.dumps(date))
print(json.dumps(date,sort_keys=True,indent=4))
json.dump(date,fp,sort_keys=True,indent=4) #输出结果为文件类型
fp.close()
输出结果:
{"d": "4", "a": "1", "c": "3", "b": "2"}
{
"a": "1",
"b": "2",
"c": "3",
"d": "4"
}
解码(decoding):将JSON类型额数据解析为python类型的数据
json.loads(string)
json.load(fp) #从文件中读入数据
import json
date = {'d':'4','a':'1','c':'3','b':'2'}
fr = open("D:/日常文件/0001.json",'r')
date1 = json.dumps(date,sort_keys=True,indent=4)
print("编码后的是数据:{}".format(date1))
print("直接解析的结果:{}".format(json.loads(date1)))
print("从文件读入的数据解析的结果:{}".format(json.load(fr)))
fr.close()
输出结果:
编码后的是数据:{
"a": "1",
"b": "2",
"c": "3",
"d": "4"
}
直接解析的结果:{'a': '1', 'b': '2', 'c': '3', 'd': '4'}
从文件读入的数据解析的结果:{'a': '1', 'b': '2', 'c': '3', 'd': '4'}
由于JSON类型数据是由一个个键值对集合组成的数组*,因此对JSON类型数据的处理可以采用对列表,字典类型处理函数进行处理!
>>> json = {
"name":"购物网站",
"num":3,
"sites":[ "京东", "淘宝", "拼多多" ]
}
>>> json["name"]
'购物网站'
>>> json["num"]
3
>>> json["sites"]
['京东', '淘宝', '拼多多']
>>> json["sites"][0]
'京东'
>>> for i in json["sites"]:
print(i)
京东
淘宝
拼多多
与服务器交换数据的函数会吗??
json.parse()函数:
json.parse()函数:
通常用于与服务端交换数据。
在接收服务器数据时一般是字符串。
使用 json.parse() 方法将数据转换为 JavaScript 对象。
语法
json.parse(text[, reviver])
参数说明:
text:必需, 一个有效的 JSON 字符串。
reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数
json.stringify()函数:
由于在向服务器发送数据时一般是字符串。
可以使用 json.stringify() 方法将 JavaScript 对象转换为字符串。
语法
json.stringify(value[, replacer[, space]])
参数说明:
value:
必需, 要转换的 JavaScript 值(通常为对象或数组)。
replacer:
可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。