• 序列化模块


    序列化模块

    • 序列化:将Python或其他语言的数据类型转换成字符串类型
      • list1 = [1,2,3]----->"[1,2,3]"
    • Python中的数据类型有:
      • int、float、str、list、dict、tuple、bool、set
    • 序列:指的是字符串
    • 序列化
      • 其他数据类型——>字符串——>文件中
    • 反序列化
      • 文件中——>字符串——>其他数据类型

    一、json模块

    json模块:是一个序列化模块,是一个“第三方”的特殊数据格式

    • 可以将

      Python数据类型——>json数据格式——>字符串——>文件中

    • 其他语言想要使用Python中的数据:

      文件中——>字符串——>json数据格式——>其他语言的数据类型

    • 注意:在json中,所有的字符串都是双引号

      元组比较特殊:

      Python中的元组,若将其转换成json数据,内部会将元组——>列表

      set(集合)是不能转换成json数据的

    • 为什么要使用json

      • 为了让不同的语言之间数据可以共享

      PS:由于各种语言的数据类型不一,但长相可以一样,比如Python不能直接使用其他语言的数据类型,必须将其他语言的数据类型转换成json数据格式,Python获取到json数据后可以将json转换成Python的数据类型

    • 如何使用

      import json

      json.dumps:
          json.dumps(),f = open()--->f.write()
      	# 序列化:Python数据类型——>json——>字符串——>json文件中
      json.loads:
          f = open(),str = f.read(), json.loads(str)
          # 反序列化:json文件中——>字符串——>json——>Python或其他语言数据类型
      json.dump():
          # 序列化:Python数据类型——>json——>字符串——>json文件中
          #内部实现:f.write()
      json.load():
          # 反序列化:json文件中——>字符串——>json——>Python或其他语言数据类型
          # 内部实现:f.read()
      

      dump、load:使用更方便

      注意:保存json数据时,用 .json 作为文件的后缀名

      import json
      
      list1 = ['123', '321']
      # dumps 将python数据 ——>json数据格式——>字符串
      json_str = json.dumps(list1)
      print(json_str)
      print(type(json_str))
      ["123", "321"]	# 双引号
      <class 'str'>	#str字符串
      
      python_data = json.loads(json_str)
      print(python_data)
      print(type(python_data))
      ['123', '321']
      <class 'list'>
      

    二、pickle模块

    • pickle模块:是一个Python自带的序列化模块
      • 优点:
        • 可以支持Python中所有的数据类型
        • 可以直接存“bytes类型”的数据,pickle存取速度更快
      • 缺点:(致命的缺点)
        • 只能支持Python使用,不可以跨平台

    import pickle

    import pickle
    set1 = {'tank', 'sean', 'jason', '大脸'}
    with open('teacher.pickle', 'wb')as f:
        pickle.dump(set1, f)
    
    with open('teacher.pickle', 'rb')as f:
        python_set = pickle.load(f)
        print(python_set)
        print(type(python_set))
    

    三、collections模块

    • python默认八大数据:
      • 整形(int)、浮点型(float)、字符串(str)、字典(dict)、元组(tuple)、列表(list)、集合(set)、布尔(bool)
    • collections 模块
      • 提供了一些Python八大数据类型“以外的数据类型”
      • 具名元组
        • 只是一个名字,应用在坐标的场景
      • from collections import namedtuple
    • 有序字典
      • Python中字典默认是无序的
      • collections中提供 了有序的字典
      • from collections import OrderedDict
    from collections import namedtuple
    
    point = namedtuple('坐标', ['x', 'y'])
    
    p = point(1, 3)
    print(p)
    print(type(p))
    
    坐标(x=1, y=3)
    <class '__main__.坐标'>
    

    扑克牌

    card = namedtuple('扑克牌', ['color', 'number'])
    # 由扑克牌对象产生一张扑克牌
    red_A = card('♥', 'A')
    print(red_A)
    black_K = card('♠', 'K')
    print(black_K)
    meihua_Q = card('♣', 'Q')
    print(meihua_Q)
    fangpian_J = card('♦', 'J')
    print(fangpian_J)
    
    扑克牌(color='♥', number='A')
    扑克牌(color='♠', number='K')
    扑克牌(color='♣', number='Q')
    扑克牌(color='♦', number='J')
    

    python 默认无序字典

    # python默认无序字典
    dic = dict({'x':1, 'y':2, 'z':3})
    print(dic)
    print(type(dic))
    for line in dic:
        print(line)
        
    {'x': 1, 'y': 2, 'z': 3}
    <class 'dict'>
    x
    y
    z
    

    有序字典

    from collections import OrderedDict
    order_dict = OrderedDict({'x':1, 'y':2, 'z':3})
    print(order_dict)
    print(type(order_dict))
    print(order_dict.get('z'))
    print(order_dict['z'])
    for line in order_dict:
        print(line)
    
    OrderedDict([('x', 1), ('y', 2), ('z', 3)])
    <class 'collections.OrderedDict'>
    3
    3
    x
    y
    z
    

    四、openpyxl模块

    openpyxl模块:第三方模块

    • 可以对Excel表格进行操作的模块

    • 下载:

      • pip3 install openpyxl
    • Excel版本

      • 2003之前: Excel 名字:.xls
      • 2003之后:Excel名字:.xlsx
    • 清华源:https://pypi.tuna.tsinghua.edu.cn/simple

    • 配置永久第三方源:

      D:Python36Libsite-packagespip_internalmodelsindex.py

    写入数据

    from openpyxl import Workbook

    读取数据

    from openpyxl import load_workbook

    # 获取Excel文件对象
    wb_obj = Workbook()
    
    wb1 = wb_obj.create_sheet('python工作表1', 1)
    wb2 = wb_obj.create_sheet('python工作表2', 2)
    
    # 修改工作表名字:为python工作表1标题修改名字
    print(wb1.title)
    wb1.title = 'hello big baby'
    print(wb1.title)
    
    # 为第一张工作表添加值
    wb1['工作簿中的表格位置']
    wb1['A1'] = 1000
    wb1['B1'] = 2000
    wb1['C1'] = '=SUM(A1:B1)'
    
    # 生成Excel表格
    wb_obj.save('python.xlsx')
    print('Excel表格生成成功')
    
    # 读取数据
    from openpyxl import load_workbook
    wb_obj = load_workbook('python.xlsx')
    print(wb_obj)
    
    wb1 = wb_obj['hello big baby']
    print(wb1['A1'].value)
    wb1['A1'] = 100
    print(wb1['A1'].value)
    
    # 批量写入100条数据
    wb_obj = Workbook()
    wb1 = wb_obj.create_sheet('工作表1')
    n = 1
    for line in range(100):
        wb1['A%s' % n] = line + 1
        n += 1
    
    wb_obj.save('表1.xlsx')
    
  • 相关阅读:
    【转】WPF的知识
    【转】WPF绑定模式
    【转】关于easyui的窗口和tab页面不执行js说明
    【转】 jquery easyui Tab 引入页面的问题
    【转】.NET+AE开发中常见几种非托管对象的释放
    【转】C# Graphics类详解
    【转】句柄概念
    storm从入门到放弃(一),storm介绍
    Spark的误解-不仅spark是内存计算,hadoop也是内存计算
    TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔
  • 原文地址:https://www.cnblogs.com/YGZICO/p/11892281.html
Copyright © 2020-2023  润新知