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')
    
    
    
  • 相关阅读:
    python 包管理工具 pip 的配置
    Python 变量作用域 LEGB (下)—— Enclosing function locals
    Python 变量作用域 LEGB (上)—— Local,Global,Builtin
    2020 Java 面试题 小结 (答案慢慢补上,有错误请指出)
    mysql 根据日期(date)做年,月,日分组统计查询
    jvm指令
    正则表达式 分割地址 获取省市区详细地址
    .Net 异常记录
    WCF设计服务协议(一)
    plsql ORA-01789:查询块具有不正确的结果列数
  • 原文地址:https://www.cnblogs.com/godlover/p/11884176.html
Copyright © 2011-2022 走看看