zoukankan      html  css  js  c++  java
  • json模块的转义dump 和反转义 loap

    # json  转义 dump    反转义 load
    # json 模块的限制
    # 1.json格式的key必须是字符串数据类型
    # 2.json格式中的字符串只能是""

    #---------------------------------------------字典------------------------------------------------------

    #-----字典中的 k 值-------------如果是数字为key,那么dump之后回强转成字符串数据类型

    # import json
    # dic = {1:2,3:4}
    # str_dic = json.dumps(dic) # 使用dumps对定义好的字典进行转义
    # print(str_dic) # 结果为 {"1": 2, "3": 4}
    #
    # new_dic = json.loads(str_dic) # 使用loads 对之前转义过的字符串反转义成为之前的数据类型--字典
    # print(new_dic) #{'1': 2,'3': 4}

    #--- dic = {k1:(元组)} 元组会被强制转换为列表

    # import json
    # dic ={"k1":"v1","k2":(1,2,3)}
    # str_dic = json.dumps(dic) # 将字典转义成为一个字符串,其中value 如果是元组的话,回别强制转化成为列表
    # print(str_dic,type(str_dic)) # 结果是{"k1": "v1", "k2": [1, 2, 3]} <class 'str'>
    # new_dic = json.loads(str_dic) #将之前转化成字符串的字典反转义成为原来的字典,里面的元组还是回保留成为列表数据类型.
    # print(new_dic,type(new_dic)) # 结果是{'k1': 'v1', 'k2': [1, 2, 3]} <class 'dict'>


    # ----字典( k 不可以使用元组)

    # import json
    # dic = {(1,2,3):"v1"} # 字典可以被定义
    # str_dic = json.dumps(dic) # 因为字典中的 k 值是一个元组,不支持,所以程序会报错.
    # print(str_dic)


    #-----------------------------------------列表-------------------------------------------------

    # ---------将列表转义成字符串写入文件,再读取文件中的字符串,反转义成为列表打印

    # import json
    # lst = ["aaa",123,"bbb",12.345]
    # with open("lst.txt","w") as f: # 打开一个文件
    # json.dump(lst,f) # 将列表lst 转义成为一个字符串,并且将此字符串写入文件中.
    # with open("lst.txt") as f: #打开刚刚那个文件.
    # ret = json.load(f) # 将文件中的保存的字符串类型的文件反转义成为之前的列表
    # print(ret,type(ret)) # 结果是 ['aaa', 123, 'bbb', 12.345] <class 'list'>


    #------可以多次将列表,字典,dump转义放入到文件,但是不能从文件一次性load 将文件取出来反转义

    # import json
    # dic = {"abc":(1,2,3)} # 定义一个字典
    # lst = ["aaa","123","bbb","456"] #定义一个列表
    # with open("json_demo","w") as f: #打开文件
    # json.dump(lst,f) #将转义后的列表写入到文件中
    # json.dump(dic,f) #将转义后的字典写入到文件中
    # with open("json_demo") as f: #打开文件
    # ret = json.loads(f) #将文件中的内容进行反转义读出来 ------(不允许将多次写入的内容一次性读出来,程序会报错)
    # print(ret)

    # -------------想将多个类型的数据dumps写入文件中,并且loads取出来(将文件单独转义,每一个文件写一行,取出来的时候也是按一行取出来)

    # import json
    # dic = {"k1":"v1","k2":"v2"} #定义一个字典
    # lst = [1,2,3,4] #定义一个列表
    # with open("json_dome","w") as f: #打开文件
    # str_dic = json.dumps(dic) #将字典进行转义
    # str_lst = json.dumps(lst) #将列表进行转义
    # f.write(str_dic+" ") #将转义后的字典(字符串类型)写入文件中,光标跳到下一行开头
    # f.write(str_lst+" ") #将转义后的列表(列表类型) 写入文件中 ,重新起一行开始写入
    # with open("json_dome") as f: #打开文件获取到文件句柄
    # for i in f: #分别取出文件中每一行
    # ret = json.loads(i) #将每一行进行反转义(每一行就是之前的一个文件)
    # print(ret)

    #------------ 转义过程中有中文 ensure_ascii = False

    # import json
    # dic = {"a":"b","country":"中国"}
    # # ret = json.dumps(dic,ensure_ascii=True) # {"a": "b", "country": "u4e2du56fd"}
    # ret = json.dumps(dic,ensure_ascii=False) # {'a': 'b','country': '中国'}
    # print(ret)
    # dic_new = json.loads(ret)
    # print(dic_new)

    #----------写入文件过程中有中文

    # 中文格式的 ensure_ascii = False
    # import json
    # dic = {'abc':(1,2,3),'country':'中国'}
    # ret = json.dumps(dic,ensure_ascii = False)
    # print(ret)
    # dic_new = json.loads(ret)
    # print(dic_new)
    #
    # with open('json_demo','w',encoding='utf-8') as f:
    # json.dump(dic,f,ensure_ascii=False)


    # json的其他参数,是为了用户看的更方便,但是会相对浪费存储空间
    # import json
    # data = {'username':['李华','二愣子'],'sex':'male','age':16}
    # json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
    # print(json_dic2)

    # set不能被dump/dumps

  • 相关阅读:
    java实现第六届蓝桥杯立方体自身
    Java实现第八届蓝桥杯包子凑数
    Snapshot Standby
    [NOI2014]购票
    DG的数据保护模式
    严格次小生成树
    Java实现第八届蓝桥杯拉马车
    Java实现第八届蓝桥杯拉马车
    Java实现第八届蓝桥杯迷宫
    在物理 Data Guard 中对异构主备系统的支持 (文档 ID 1602437.1)
  • 原文地址:https://www.cnblogs.com/kcwxx/p/9452040.html
Copyright © 2011-2022 走看看