第四十二次总结:json模块与pickle模块
什么是json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。
json模块
主要功能
把数据进行序列化与反序列化的操作
序列化
把一个数据,转化为一个字符串。 字符串是json规范的字符串。
res = json.dupms(数据) ensure_ascii=False 可以让保存的中文不被编码为我们看懂的样子
返回值res,它是一个字符串.
把字符串转为双引号的字符串
import json m = 'hello' r = json.dumps(m) print(r)
列表成员分别是单引,双引,三引符号,均转为双引号字符串
import json m = ['hello', "你好", """在不在"""] r = json.dumps(m) print(r)
["hello", "\u4f60\u597d", "\u5728\u4e0d\u5728"]
dumps 英 [dʌmps] 美 [dʌmps] v. (尤指在不合适的地方)丢弃,扔掉,倾倒;丢下;抛弃;推卸;(向国外)倾销,抛售 dump的第三人称单数
反序列化
json.loads(str数据)
把一个字符串,还原为它原有的数据类型
import json f = open('b.txt', 'r', encoding='utf8') content_str = f.read() f.close() print(content_str, type(content_str)) c = json.loads(content_str) print(c, type(c))
小结
json模块的主要两个方法
1,json.dumps(数据)
接收一个数据,把它进行处理,最终得到一个字符串。
字符串,它是一个json类型的字符串
2,json.loads(str数据)
还原str数据中包裹的内容
获得真正的对象
dump与dumps
dumps方法
接收一个数据,把数据进行序列化,得到一个序列化后的结果
dump方法
接收一个数据,接收一个文件对象
把数据序列化,并保存到文件对象中
两者区别
使用dumps保存
import json name_list = ["张三333","李四222"] f = open("a.txt", "w", encoding="utf8") name_str = json.dumps(name_list, ensure_ascii=False) f.write(name_str) f.close()
使用dump保存
import json name_list = ["张三333","李四222"] f = open("a.txt", "w", encoding="utf8") json.dump(name_list,f,ensure_ascii=False) f.close()
记忆dumps与dump的方法
英语中,对于复数形式,都会在单词的未位,加上s
一个苹果 apple
两个苹果 two apples
我们的dumps一般处理了数据后,都会获得一堆数据
理解为复数
dump它自动帮我们做了文件的处理
会获得数据 = json.loads(json字符串)
load与loads
import json # f = open("a.txt", "r", encoding="utf8") c = json.load(f) # 1,读取文件 f.read() 2,把文件的内容进行反序列化 json.loads(内容) f.close() print(c, type(c))
pickel模块
用法
导入模块
import pickle
import pickle age_list = [11,34] age_bytes = pickle.dumps(age_list) print(age_bytes, type(age_bytes))
序列化,反序列化,用法同json
import pickle age_list = [11,34] # 序列化 age_bytes = pickle.dumps(age_list) print(age_bytes, type(age_bytes)) # age_bytes ---- > 列表 age_li = pickle.loads(age_bytes) print(age_li, type(age_li))
正则表达式
正则表达式的功能就是进行匹配
类似于字符串的find方法
但是比find方法更强大
正确
则,那么
如果匹配成功,那么。。。要做什么呢
re模块
python中使用正则表达式的模块
import re
match函数
r = match(正则式,字符串)
如果正式式对字符串进行匹配结果是有值的
那么r就是一个匹配成功的对象
该对象有一个group()方法
调用group()方法,可以得到匹配成功的准确数据
pattern 英 [ˈpætn] 美 [ˈpætərn] n. 模式;方式;范例;典范;榜样;样板;图案;花样;式样 v. 构成图案(或花样);使形成,促成(某行为模式) 第三人称单数: patterns 复数: patterns 现在分词: patterning 过去式: patterned 过去分词: patterned
match 英 [mætʃ] 美 [mætʃ] n. 火柴;比赛;竞赛;敌手;旗鼓相当的人 v. 般配;相配;相同;相似;相一致;找相称(或相关)的人(或物);配对 第三人称单数: matches 复数: matches 现在分词: matching 过去式: matched 过去分词: matched
group 英 [ɡruːp] 美 [ɡruːp] n. 组;群;批;类;簇;集团;(尤指流行音乐的)演奏组,乐团,乐队 v. (使)成群,成组,聚集;将…分类;把…分组 第三人称单数: groups 复数: groups 现在分词: grouping 过去式: grouped 过去分词: grouped
例子:
import re ret = re.match("....","流浪地球第6季") print(ret) print(ret.group())
匹配单个字符
.
正则式中的.符号,代表1个任意的符号,除了\n
[] 有或的意思
中括号中写入多个元素
正则进行匹配的时候只要有一个是里面的
那么就匹配成功
匹配中括号中任意一个
import re p = "[ab]" s = "bb" ret = re.match(p,s) print(ret) # print(ret.group())
import re p = "[ab][ab]" s = "bb" ret = re.match(p,s) print(ret) # print(ret.group())