美文网首页
【第46天】python全栈从入门到放弃

【第46天】python全栈从入门到放弃

作者: 36140820cbfd | 来源:发表于2019-08-03 16:34 被阅读0次

    1.json序列化模块

    列表,元组,字符串都属于序列,可以通过索引来获取值的就是广义上的序列。python序列化模块讲的序列化主要针对字符串,就是把字典,列表,数字,对象转为字符串的过程,就是序列化。为什么要进行序列化?第一种情况,要把内容写进网络,需要序列化,第二种情况,需要进行网络传输。

    2.json.dumps()的使用,把字典,列表,数字序列化为字符串.

    代码块
    import json
    
    dict={'name':'wangsiyu','age':18}
    
    str_dict=json.dumps(dict)
    
    print(str_dict,type(str_dict))   #{"name": "wangsiyu", "age": 18} <class 'str'>
    

    3.json.loads()反序列化

    代码块
    import json
    
    dict = {'name': 'wangsiyu', 'age': 18}
    
    str_dict = json.dumps(dict)
    
    res = json.loads(str_dict)
    
    print(res, type(res))     #{'name': 'wangsiyu', 'age': 18} <class 'dict'>
    

    4.json.dump()把字典,列表,数字,对象写入文件

    代码块
    
    import json
    
    dic = {'aaa':'bbb','ccc':'ddd'}
    
    with open('json_dump2','w') as f:
        
        json.dump(dic,f)
    

    5.json.load()把文件中的东西读取出来

    代码块
    import json
    
    with open('json_dump2','r') as f:
    
        res=json.load(f)
    
        print(res)   #{'aaa': 'bbb', 'ccc': 'ddd'}
    

    6.json格式的限制:1,json格式的key必须是字符串数据类型,json格式中的字符串只能是""双引号

    7.如果是数字为key,那么dump之后会强行转成字符串数据类型,反序列化后数字key也是有引号的。

    代码块
    import json
    
    dic = {1:2,3:4}
    str_dic = json.dumps(dic)
    print(str_dic)    #{"1": 2, "3": 4}
    new_dic = json.loads(str_dic)
    print(new_dic)   #{'1': 2, '3': 4}
    

    7.json是否支持元组,对元组做value的字典会把元组强制转换成列表

    代码块
    import json
    
    dic = {'abc':(1,2,3)}
    str_dic = json.dumps(dic)
    print(str_dic)    #{"abc": [1, 2, 3]}
    new_dic = json.loads(str_dic)
    print(new_dic)    #{'abc': [1, 2, 3]}
    

    8.json是否支持元组做key,不支持

    代码块
    dic = {(1,2,3):'abc'}
    str_dic = json.dumps(dic)  # 报错
    

    9. 对列表进行dumps()和loads()

    代码块
    import json
    
    # 对列表的dump
    lst = ['aaa',123,'bbb',12.456]
    with open('json_demo','w') as f:
        json.dump(lst,f)
    with open('json_demo','r') as f:
        ret = json.load(f)
        print(ret)   #['aaa', 123, 'bbb', 12.456]
    

    10. 能不能多次dump数据到文件里,可以多次dump但是不能load出来了

    代码块
    import json
    
    
    dic = {'abc':(1,2,3)}
    lst = ['aaa',123,'bbb',12.456]
    with open('json_demo','w') as f:
        json.dump(lst,f)
        json.dump(dic,f)
    with open('json_demo') as f:
        ret = json.load(f)
        print(ret)
    
    

    11.多次dump数据到文件里,写文件记得加上换行符‘\n’

    代码块
    import json
    
    # 想dump多个数据进入文件,用dumps
    dic = {'abc':(1,2,3)}
    lst = ['aaa',123,'bbb',12.456]
    with open('json_demo','w') as f:
        str_lst = json.dumps(lst)
        str_dic = json.dumps(dic)
        f.write(str_lst+'\n')
        f.write(str_dic+'\n')
    
    with open('json_demo') as f:
        for line in f:
            ret = json.loads(line)
            print(ret)
    

    12.中文格式的序列化与反序列化 ensure_ascii = False

    代码块
    import  json
    
    dic = {'abc':(1,2,3),'country':'中国'}
    ret = json.dumps(dic,ensure_ascii = False)
    print(ret)    #{"abc": [1, 2, 3], "country": "中国"}
    #反序列化
    dic_new = json.loads(ret)
    print(dic_new)     #{'abc': [1, 2, 3], 'country': '中国'}
    #
    with open('json_demo','w',encoding='utf-8') as f:
        json.dump(dic,f,ensure_ascii=False)
    

    13. json的其他参数,是为了用户看的更方便,但是会相对浪费存储空间

    代码块
    import json
    
    
    import json
    data = {'username':['李华','二愣子'],'sex':'male','age':16}
    json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
    # sort_keys表示排序,indent表示缩进量,separators表示分隔
    print(json_dic2)
    
    别跑,点个赞再走

    相关文章

      网友评论

          本文标题:【第46天】python全栈从入门到放弃

          本文链接:https://www.haomeiwen.com/subject/zcpjdctx.html