zoukankan      html  css  js  c++  java
  • json,pickle,collections,openpyxl模块

    json,pickle,collections,openpyxl模块

    json模块

    ​ 它是一个序列化模块

    json:

    是一个‘第三方’的特殊数据格式

    ​ 可以将python数据类型---------》json数据格式---------》字符串----------》文件中

    其他语言要想使用python的数据:

    ​ 文件中---------》字符串------------》json数据格式------------》其他语言的数据类型

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

    元组比较特殊:

    ​ python中的元组,若将其转换成json数据,内部会将元组转换成列表

    import json
    tup = (1, 2, 3)
    with open(r'user.txt', 'w', encoding='utf-8') as rf:
        json.dump(tup, rf, ensure_ascii=False)
        
    [1, 2, 3]
    

    ​ set是不能转换成json数据的

    为什么要使用json:

    ​ 为了让不同的语言之间数据可以分享

    如何使用:

    import json

    json.dumps:

    json.dumps() , f=open() -------->f.write()

    json_str = json.dumps(tup)
    print(json_str)
    str1 = '你是谁啊'
    json_str = json.dumps(str1)
    print(json_str)
    
    "u4f60u662fu8c01u554a"
    json_str1 = json.dumps(str1,ensure_ascii=False)
    "你是谁啊"
    

    序列化

    json.loads:

    f = open(), str = f.read(), json.loads(str)

    python_data = json.loads(json_str)
    print(python_data)
    
    你是谁啊
    
    

    反序列

    json.dump()

    内部实现 f.write()

    json.load()

    内部实现f.read()

    dump,load:使用更方便

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

    ​ ensure_ascii将默认的ascii取消设置为False,可以在控制台看到中文,否则在控制台看到中文,否则看到的是bytes类型数据

    import json
    tup = (1, 2, 3)
    with open(r'user.json', 'w', encoding='utf-8') as wf:
        json.dump(tup, wf, ensure_ascii=False)
        
    [1, 2, 3]
    
    with open(r'user.json','r',encoding='utf-8') as rf:
        tup_txt = json.load(rf)
        print(tup_txt)
        print(type(tup_txt))
        
    [1, 2, 3]
    <class 'list'>
    
    

    pickle模块:

    ​ pickle是一个python自带的序列化模块

    ​ 优点:

    ​ 可以支持python中所有的数据类型

    ​ 可以直接存‘bytes类型’的数据,pickle存取速度更快

    ​ 缺点:

    ​ 只能支持python去使用,不能跨平台

    import pickle
    
    set1 = {
        1, 2, 3, 4
    }
    with open(r'user1.pickle', 'wb') as f:
        pickle.dump(set1, f)
    with open(r'user1.pickle', 'rb') as f:
        print(pickle.load(f))
        
        �cbuiltins
    set
    q ]q(KKKKe�qRq.
        {1, 2, 3, 4}
    

    python中的元组,若将其转换成pickle数据,内部不会将元组转换成列表

    tuple1 = (1,2,3)
    tuple1_obj = pickle.dumps(tuple1)
    print(tuple1_obj)
    print(pickle.loads(tuple1_obj
                       
                       
    b'x80x03Kx01Kx02Kx03x87qx00.'
    (1, 2, 3)
    
    

    python默认八大数据:

    ​ -整型

    ​ -浮点型

    ​ -字符串

    ​ -字典

    ​ -元组

    ​ -列表

    ​ -集合

    ​ -布尔

    collections模块:

    ​ 提供一些python八大数据类型“以外的数据类型”

    具名元组:

    ​ 具名元组 只是一个名字

    应用场景:

    ​ 坐标

    from collections import namedtuple

    有序字典:

    python中的字典是无序的

    collections中提供了有序的字典

    from collections import OrderedDict

    具名元组

    from collections import namedtuple

    传入可迭代对象是有序的

    应用:坐标

    将’坐标‘变成’对象‘的名字

    from collections import namedtuple
    point = namedtuple('坐标',['x','y'])
    
    # point = namedtuple('坐标','x y')
    #
    # point = namedtuple('坐标',('x','y'))
    
    p = point(1, 2)
    
    print(p)
    
    print(type(p))
    
    
    坐标(x=1, y=2)
    <class '__main__.坐标'>
    

    演员的信息

    p = namedtuple('电影', ['city', 'movie_type', 'name'])
    data = p('大阪', 'action', 'c老师')
    print(data)
    
    电影(city='大阪', movie_type='action', name='c老师')
    

    有序字典

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

    生成扑克牌:

    # 获取扑克牌对象
    card = namedtuple('扑克牌', 'color number')
    # 由扑克牌对象产生一张张扑克牌
    red_A = card('♥', 'A')
    red_K = card('♠', 'K')
    print(red_A, red_K)
    
    
    扑克牌(color='♥', number='A') 扑克牌(color='♠', number='K')
    

    openpyxl模块

    ​ 这是第三方模块

    ​ 可以对excel表格进行操作的模块

    下载:

    pip3 install openpyxl

    excel版本:

    2003之前:

    ​ excle名字:xls

    2003以后:

    ​ excel名字:xlsx

    - 配置永久第三方源:
        D:Python36Libsite-packagespip\_internalmodelsindex.py
    
    from openpyxl import Workbook
    from openpyxl import load_workbook
    
    # 获取excel文件对象
    # wb_obj = Workbook()
    # wb1 = wb_obj.create_sheet('python1', 1)
    # wb2 = wb_obj.create_sheet('python2', 2)
    # # print(wb_obj)
    # # wb_obj.save('尼玛炸了.xlsx')
    # # 修改工作表名字,将python1改为大宝贝
    # print(wb1.title)    # 文件处于打开状态时,不允许访问  *************
    # wb1.title = '艺昕大宝贝.xlsx'
    # print(wb1.title)
    # # 为第一张工作表添加值
    # # wb1['工作簿中的表格未知']
    # wb1['A10'] = 200
    # wb1['B10'] = 1000
    # wb1['C10'] = '=SUM(A10:b10)'
    # wb2['A1'] = 100
    # wb_obj.save('唐艺昕大宝贝.xlsx')
    # print('excel表格生成成功!')
    
    # # 读取数据
    wb_obj = load_workbook('唐艺昕大宝贝.xlsx')
    print(wb_obj)
    
    # wb_obj['表名']
    wb1 = wb_obj['艺昕大宝贝.xlsx']
    print(wb1['A10'].value)
    wb1['A10'] = 20
    print(wb1['A10'].value)
    wb_obj.save('唐艺昕大宝贝.xlsx')
    
    
    # 批量写入数据
    dict1 = {'name': 'tank',
             'age': 17
             }
    wb_obj = Workbook()
    wb1 = wb_obj.create_sheet('ship.xlsx')
    n = 1
    for key, value in dict1.items():
        wb1['A%s' % n] = key
        wb1['B%s' % n] = value
        n += 1
    wb_obj.save('批量插入的数据.xlsx')
    
    
    
  • 相关阅读:
    js高级教程阅读笔记 第一章-js的简介
    angular.element方法汇总
    AngularJS第六课(路由)
    AngularJS第五课(模块,动画,依赖注入)
    javascript基础整理(面试必备)
    Google工具page-speed使用教程(网站性能检测)
    常见前端面试题及答案
    css之布局那些事
    jquery之全屏滚动插件fullPage.js
    Git远程操作详解
  • 原文地址:https://www.cnblogs.com/godlover/p/11884176.html
Copyright © 2011-2022 走看看