json模块:是一个序列化模块。
json:是一个‘第三方’的特殊数据格式。
可以将python数据类型--->json数据格式--->字符串--->文件中
其他语言要是想使用python的数据:
文件中--->字符串--->json数据格式--->去他语言的数据类型
注意:在json中,所有是字符串都是双引号
元组比较特殊:python中的元组,又是将其转化成json数据,内部会将元组--->列表
集合(set)是不能装换成json数据
为什么要使用json:
魏了让不同语言之间的数据可以共享。
ps:由于各种语言的数据类型不一,但长相可以一样,比如python不能直接使用其他语言的数据类型,必须将其他语言的数据类型转换成json数据格式,python获取到json数据后可以将json转换成pyton的数据类型
如何使用:
import json'''json.dumps:json.dumps() #f = open()-->f.writhe() 序列化:python数据类型 --->json --->字符串--->json文件中json.loads:f = open(), str = f.read(), json loads(str)反序列化:json文件中--->字符串--->json--->python或其他语言数据类型json.domp() 序列化:python数据类型-->json-->字符串-->json文件中内部实现 f.write()json.load() 反序列化:json文件中-->字符串-->json-->python或其他语言数据类型内部实现 f.read()dump, load: 使用更方便注意:保存json数据时,用.json做为文件的后缀名'''# 列表# l1 = ['123','456']# l2 = ['斯卡蒂','夜莺','能天使']# dumps: 将python数据-->json数据格式-->字符串# ensure_ascii将默认的ascii取消设置为False,可以再控制台看到中文,否则看到的是bytes类型数据# json_str = json.dumps(l2, ensure_ascii=False)# json_str1 = json.dumps(l1)# print(json_str1)# print(json_str)# print(type(json_str))# json.loads()字符串-->json数据格式-->python数据# python_data = json.loads(json_str)# python_data1 = json.loads(json_str1)# print(python_data1)# print(python_data)# print(type(python_data))# 元组# t1 = ('初雪','伊芙利特','芙兰朵露')# dumps: 将python数据-->json数据格式-->字符串# ensure_ascii将默认的ascii取消设置为False,可以再控制台看到中文,否则看到的是bytes类型数据# json_str1 = json.dumps(t1, ensure_ascii=False)# print(json_str1)# print(type(json_str1))# json.loads()字符串-->json数据格式-->python数据# python_data = json.loads(json_str1)# print(tuple(python_data)) # 元组# print(python_data) # 列表# 字典# d1 = {# 'name' : 'angle',# 'age' : 19# }# dumps: 将python数据-->json数据格式-->字符串# ensure_ascii将默认的ascii取消设置为False,可以再控制台看到中文,否则看到的是bytes类型数据# json_str = json.dumps(d1, ensure_ascii=False)# print(json_str)# print(type(json_str))# json.loads()字符串 ----> json数据格式 ---》将python数据# python_data = json.loads(json_str)# print(python_data)# print(type(python_data)) # 字典 dict# 注册功能# def register():# username = input('你的用户名:').strip()# password = input('你的密码:').strip()# re_password = input('确认密码:').strip()# if password == re_password:# user_dic = {# 'name': username,# 'pwd' : password# }# json_str = json.dumps(user_dic, ensure_ascii=False)## # 开始写入文件中# # 注意: 保存json数据时,用.json作为文件的后缀名# with open(r'user.json', 'w', encoding='utf-8')as f:# f.write(json_str)# register()# dump, loadimport jsonuser_dic = { 'username': 'jinyi', 'password': 123}# with open('user2.json', 'w',encoding='utf-8')as f:# json.dump(user_dic, f)# with open('user2.json', 'r',encoding='utf-8')as f:# print(json.load(f))
pickle模块
'''pickle模块: pickle是一个python自带的序列化模块。 优点: - 可以支持python中所有的数据类型 - 可以直接存 "bytes类型" 的数据,pickle存取速度更快 缺点: (致命的缺点) - 只能支持python去使用,不能跨平台'''import pickle# set1 = {# 'tank', 'sean', 'jason', '大脸'# }## # 写 dump# with open('teacher.pickle', 'wb') as f:# pickle.dump(set1, f)# 读 loadwith open('teacher.pickle', 'rb') as f: python_set = pickle.load(f) print(python_set) print(type(python_set))
collections模块
python默认八大数据:
整型, 浮点型, 字符串, 字典, 元组, 列表, 集合, 布尔值
collections模块:
提供一些python八大数据类型‘以外的数据类型’
具名元组:
具名元组 只是一个名字
应用场景:
-坐标
from collections import OrderedDict
有序字典:
python中字典默认是无序
collections import OrderedDict
collections中提供了有序的字典
from collections import OrderedDict
# 具名元组# from collections import namedtuple# # 传入可迭代对象是有序的# # 应用:坐标# # 将‘坐标’编程‘对象’的名字# point = namedtuple('坐标', ['x', 'y'],)# 第二个参数既可以传可迭代对象#传参 个数,要与namedtuple第二个参数的个数以一一对应# p = point(1, 3) # 本质上传了4个# print(p)# print(type(p))### # 扑克牌:# card = namedtuple('扑克牌', ['color', 'number'])# c1 = card('♥', 'A')# c2 = card('♠', 'A')# c3 = card('♦', 'A')# print(c1)# print(c2)# print(c3)# python中字典默认无序dic = dict({'a': 1, 'b': 2, 'c': 3})print(dic)for i in dic: print(i)# 有序字典from collections import OrderedDictorder_dict = OrderedDict({'a': 1, 'b': 2, 'c': 3})print(order_dict)print(order_dict.get('b'))
openpyxl模块
第三方模块,可以对Excle表格进行操作的模块
# 写入数据from openpyxl import Workbook# 获取Excel文件对象w1 = Workbook()wb1 = w1.create_sheet('异界大魔王1', 1)wb2 = w1.create_sheet('放开那个巫女1', 2)# 修改工作表名字: 为异界大魔女1print(wb1.title)wb1.title = '异界大魔女1'print(wb1.title)# 为第一张工作表添加值#wb1['工作表中的表格位置']wb1['A10'] = 200wb1['b10'] = 100wb1['c10'] = 'SUM(A10:B10)'wb2['A1'] = '世界之大'# 生成Excel表格w1.save('异界剑圣纵横天下.xlsx')print('成功')