第16天(内置模块)

第16天(内置模块)


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('成功')

 

posted @ 2019-11-18 19:59  迎着阳光  阅读(143)  评论(0编辑  收藏  举报