• Python -- 序列化模块


    6.2.1序列化模块

    -- 将一种数据结构转化成特殊的序列(特殊的字符串,bytes)并且还可以反转回去

    json模块 : (重点

    1. 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串。(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3])
    2. json序列化只支持部分Python数据结构:dict,list, tuple,str,int, float,True,False,None

    pickle模块:

    1. 只能是Python语言遵循的一种数据转化格式,只能在python语言中使用。
    2. 支持Python所有的数据类型包括实例化对象。
    • json模块

      主要用于网络传输,可以用于文件读写:dumps loads ( 多个数据单个数据都行 )

      只能用于文件读写:dump load ( 单个数据 )

    import json
    dic = {'k1':'v1','k2':'v2','k3':'v3'}
    str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
    print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
    #注意,json转换完的字符串类型的字典中的字符串是由""表示的
    
    dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
    #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
    print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
    
    # 写入文件中,再读取出来
    import json
    dic = {'username': '老李', 'password': 123,'status': False}
    str_dic = json.dumps(dic)
    with open('json练习.json',mode='w',encoding='UTF-8') as f:
        f.write(str_dic)
    
    with open('json练习.json',mode='r',encoding='UTF-8') as f1:
        content = f1.read()
        print(json.loads(content))
        
    # 单个数据的存取文件 
    import json
    dic = {'username': '太白', 'password': 123,'status': False}
    with open('jsonlx1.json',encoding='utf-8',mode='w') as f1:
        json.dump(dic,f1)
    
    with open('jsonlx1.json',encoding='utf-8') as f1:
        dic1 = json.load(f1)
    print(dic1,type(dic1))
    
    # 多个数据存储到一个文件中
    import json
    dic1 = {'username': '太白', 'password': 123,'status': False}
    dic2 = {'username': 'alex', 'password': 123,'status': False}
    dic3 = {'username': 'ly', 'password': 123,'status': False}
    with open('jsonmore',mode='a',encoding='utf-8') as f:
        f.write(json.dumps(dic1)+'
    ')
        f.write(json.dumps(dic2)+'
    ')
        f.write(json.dumps(dic3)+'
    ')
    
    with open('jsonmore',mode='r',encoding='utf-8') as f2:
        for line in f2:
            ret = json.loads(line)
            print(ret)
    
    • pickle模块
    import pickle
    #dumps,loads  只能是网络传输
    l1 = ['wusir', '大白', '小黑', 666]
    ret = pickle.dumps(l1)
    print(ret)
    
    l2 = pickle.loads(ret)
    print(l2,type(l2))
    
    # dump load 数据结构存取文件.
    import pickle
    l1 = ['wusir', '大白', '小黑', 666]
    with open('pickle练习.pickle',mode='wb') as f1:
        pickle.dump(l1,f1)
    
    with open('pickle练习.pickle', mode='rb') as f1:
        ret = pickle.load(f1)
        print(ret,type(ret))
        
        
    # 多个数据写入文件
    import pickle
    l1 = ['wusir', '大白', '小黑1', 666]
    l2 = ['wusir', '大白', '小黑2', 666]
    l3 = ['wusir', '大白', '小黑3', 666]
    with open('pickle练习1.pickle',mode='wb') as f1:
        pickle.dump(l1,f1)
        pickle.dump(l2,f1)
        pickle.dump(l3,f1)
    
    with open('pickle练习1.pickle', mode='rb') as f1:
        ret1 = pickle.load(f1)
        ret2 = pickle.load(f1)
        ret3 = pickle.load(f1)
        print(ret1,ret2,ret3)
    
  • 相关阅读:
    hdu 4302 Holedox Eating 夜
    poj 1947 Rebuilding Roads 夜
    hdu 4303 Hourai Jeweled 夜
    poj 1286 Necklace of Beads 夜
    poj 2057 The Lost House 夜
    hdu 4301 Divide Chocolate 夜
    poj 3140 Contestants Division 夜
    BOM(二)
    Str的方法
    求出字符窜的字母的个数
  • 原文地址:https://www.cnblogs.com/Agoni-7/p/11105009.html
Copyright © 2020-2023  润新知