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, load
import json
user_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)
# 读 load
with 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 OrderedDict
order_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)
# 修改工作表名字: 为异界大魔女1
print(wb1.title)
wb1.title = '异界大魔女1'
print(wb1.title)
# 为第一张工作表添加值
#wb1['工作表中的表格位置']
wb1['A10'] = 200
wb1['b10'] = 100
wb1['c10'] = 'SUM(A10:B10)'
wb2['A1'] = '世界之大'
# 生成Excel表格
w1.save('异界剑圣纵横天下.xlsx')
print('成功')