zoukankan      html  css  js  c++  java
  • dump、load、dumps、loads,json与python数据数据转换

    ###平时使用python来进行文件读写时,免不了会出现将字典、list数据类型的字符写入到文件中,又或者将文件中读取的数据转换成python数据类型,然后易于操作等,那么此时就需要学会二者之间的互相转换 ###之间很长一段之间都傻傻分不清楚dump、load、dumps、loads,它们什么时候用,用来干什么,现在终于了解明白清楚了,现在一一记录下来,说明每一个的用法

    import json
    
    info={
        
        "name":"xiaoming",
        
        "age":12
    }
    
    print(type(info)) #dict
    

    ####将字典类型的info写入文件

    with open ('info.txt','w+',encoding='utf-8') as f:
    
        f.write(info)  
        #此时会报错,提示写入文件时,必须写的时字符串类型
    那么此时,就需要把字典转成字符串写入到文件中,而json字符串就是长得和字典很相像的字符串
    

    那么接下来,我们需要将python数据类型转化成json类型,然后操作文件的读写

    #方法一:字典转成json串,然后写入文件
    new_info = json.dumps(info)
    
    print(type(new_info)) #str ,此时new_info是字符串类型,再将new_info写入到文件中
    
    with open ('info.txt','w+',encoding='utf-8') as f:
    
        f.write(new_info)
      
    
    #方法二:直接使用json.dump()
    
    with open ('info1.txt','w+',encoding='utf-8') as f:
    
        json.dump(info,f) #将字典转化成j son字符串,同时写入文件
    
    

    -------------------------------------我是分割线---------------------------------------

    ####那么如何将从文件内读取处理的json串转化成python能操作的数据类型呢?这里将使用到load,loads方法,把json串转化成python数据类型

    下面举例说明

    拿咱们上边写好的"info.txt"文件来说,里边存好了写入的json串

    方法一:将文件内容读取出来之后,然后转化类型
    
    第一步读取文件
    with open('info.txt','r+',encoding='utf-8') as fr:
    
        con = fr.read()
    
        print('我是文件内容:%s,我的类型是%s'%(con,type(con)))
    
        #我是文件内容:{"name": "xiaoming", "age": 12},我的类型是<class 'str'>
    
    #第二步,将json串转化成python数据类型
    new_con = json.loads(con)
    
    print(type(new_con)) 
    #<class 'dict'> 此时我们就可以使用python处理python数据类型了~
    
    方法二:直接在操作文件的时候使用json.load(文件对象),这样读取出来的已经转好为python数据类型
    
    with open('info.txt','r+',encoding='utf-8') as fr:
    
        con=json.load(fr)
    
        print('我是文件内容:%s,我的类型是%s' % (con, type(con)))
    
        #我是文件内容:{'age': 12, 'name': 'xiaoming'},我的类型是<class 'dict'>
    
  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/zhuyue1/p/7146853.html
Copyright © 2011-2022 走看看