zoukankan      html  css  js  c++  java
  • 第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('成功')

     

  • 相关阅读:
    css自适应浏览器大小
    javascript es6 箭头函数
    vue-router路由的使用
    vue-client脚手架使用
    springboot整合thymeleaf模板引擎
    SpringBoot不使用模板引擎直接返回html
    css加载动画
    java将数据从List转换Map
    KMP算法理解
    解决Linux服务器tomact-8.0启动慢的问题
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/11884652.html
Copyright © 2011-2022 走看看