zoukankan      html  css  js  c++  java
  • python json & pickle 模块

    用于序列化的两个模块

    • json,用于字符串 和 python数据类型间进行转换
    • pickle,用于python特有的类型 和 python的数据类型间进行转换

    Json模块提供了四个功能:dumps、dump、loads、load

    pickle模块提供了四个功能:dumps、dump、loads、load

    一、python 3 JSON模块使用(用于字符串和python数据类型间进行转换)
    import json
    data = {
        "北京市": {
            "朝阳区": ["三里屯", "望京", "国贸"],
            "海淀区": ["五道口", "学院路", "后厂村"],
            "东城区": ["东直门", "崇文门", "王府井"],
        },
        "上海市": {
            "静安区": [],
            "黄浦区": [],
            "虹口区": [],
        }
    }

    1、json.dumps    dict-->strting

    #json.dumps  将数据通过特殊的形式转换为所有程序语言都认识的字符串

    s_dumps = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False)
    print(type(s_dumps))
    print(s_dumps)
    
    output:
    <class 'str'>
    {
        "上海市": {
            "虹口区": [],
            "静安区": [],
            "黄浦区": []
        },
        "北京市": {
            "东城区": [
                "东直门",
                "崇文门",
                "王府井"
            ],
            "朝阳区": [
                "三里屯",
                "望京",
                "国贸"
            ],
            "海淀区": [
                "五道口",
                "学院路",
                "后厂村"
            ]
        }
    }

    2、json.loads  string-->dict

    r_loads = json.loads(s_dumps)
    print(type(r_loads))
    print(r_loads)
    
    output:
    <class 'dict'>
    {'上海市': {'虹口区': [], '静安区': [], '黄浦区': []}, '北京市': {'东城区': ['东直门', '崇文门', '王府井'], '朝阳区': ['三里屯', '望京', '国贸'], '海淀区': ['五道口', '学院路', '后厂村']}}

    3、json.dump  写入文件

    #json.dump  将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件

    with open("data.json", "w", encoding="UTF-8") as f_dump:
        s_dump = json.dump(data, f_dump, indent=4, ensure_ascii=False)

    print(type(s_dump))
    print(s_dump)


    output:
    <class 'NoneType'>
    None

    4、json.load  从文件读取

    with open("data.json", "r", encoding="utf-8") as f_load:
        r_load = json.load(f_load)
    
    print(type(r_load))
    print(r_load)
    
    output:
    <class 'dict'>
    {'北京市': {'朝阳区': ['三里屯', '望京', '国贸'], '海淀区': ['五道口', '学院路', '后厂村'], '东城区': ['东直门', '崇文门', '王府井']}, '上海市': {'静安区': [], '黄浦区': [], '虹口区': []}}

     二、python 3 pickle  模块使用(用于python特有的类型 和 python的数据类型间进行转换)

    import pickle
    data = {'k1': 123, 'k2': 'Hello'}

    1、pickle.dumps    将数据通过特殊的形式转换为只有python语言认识的字符串

    p_str = pickle.dumps(data)
    print(type(p_str))
    print(p_str)
    
    output:
    <class 'bytes'>
    b'x80x03}qx00(Xx02x00x00x00k1qx01K{Xx02x00x00x00k2qx02Xx05x00x00x00Helloqx03u.'

    2、pickle.loads  

    p_dict = pickle.loads(p_str)
    print(type(p_dict))
    print(p_dict)
    
    output:
    <class 'dict'>
    {'k1': 123, 'k2': 'Hello'}

    3、pickle.dump    将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件

    print(type(data))
    with open('data2.json', 'wb') as fp:
        pickle.dump(data, fp)
    
    output:
    <class 'dict'>

    4、pickle.load

    with open('data2.json', 'rb') as fo:
        p_load = pickle.load(fo)
    
    print(type(p_load))
    print(p_load)
    
    output:
    <class 'dict'>
    {'k1': 123, 'k2': 'Hello'}
  • 相关阅读:
    第三周java学习总结
    第一周Java学习总结
    关闭窗体
    乱七八糟
    网页游戏资料
    timer控件的使用
    spread 签套循环改变颜色编号为颜色
    限制输入‘号的代码
    SQlcharindex命令
    限制输入类型
  • 原文地址:https://www.cnblogs.com/jmaly/p/7645611.html
Copyright © 2011-2022 走看看