• 处理json json与字典的转换


    一、json

    json是一个字符串,是一种通用的数据格式,所有语言都可以解析,只不过长得比较像字典。使用json函数需要导入json库,即import json

    json的格式只有双引号,不可用单引号

    1、json.loads()和json.load()的区别

    (1)json.loads() 将json串(字符串)转成字典

    import json
    
    user_info = '''{"nhy":"123456","aa":"123456"}'''
    print(user_info)
    # {"nhy":"123456","aa":"123456"}
    user_dic = json.loads(user_info)# 把json串(字符串)转成字典
    print(user_dic)
    # {'nhy': '123456', 'aa': '123456'}
    print('user_dic',type(user_dic))
    # user_dic <class 'dict'>
    print('user_info',type(user_info))
    # user_info <class 'str'>

    (2) json.load(f)  这个是直接从文件里拿,不需要再读一次文件了,json直接读。帮我们封装了处理文件的功能

    注释:f是指文件

    import json
    
    f = open('stu.json')
    # stu.json文件内的内容
    # {
    #     "laowang": {
    #         "cars": [
    #             "BMW",
    #             "Ben-z"
    #         ]
    #     }
    # }
    # res1 = json.loads(f.read())
    # print(res1) #{'laowang': {'cars': ['BMW', 'Ben-z']}}
    res = json.load(f)
    print(res)
    #{'laowang': {'cars': ['BMW', 'Ben-z']}}

    例子:

    #content = f.read()
    #d = json.loads(content)
    
    #d = json.load(f) #上面两行代码可以用这一行代码实现
    # with open('info.txt',encoding='utf-8') as fw:
    #     d = json.load(fw)
    #     print(d)
    #     print(d.get('name'))
    #     print(d.get('money'))

     2、json.dumps()和json.dump() 的区别

    (1)json.dumps()    把字典转成json   把python的数据类型(比如字典里有元组)转换为json

    import json
    
    stu_info = {'laowang':{'cars':['BMW','Ben-z']}}
    # stu_info是字典
    stu_str = json.dumps(stu_info)# 把字典转成json(字符串)
    print('json...',type(stu_str))
    # json... <class 'str'>
    print(stu_str)
    # {"laowang": {"cars": ["BMW", "Ben-z"]}}

    如果字典里有中文,那么加一个参数即可,如:

    stu_str = json.dumps(stu_info,ensure_ascii=False)

    如果想让转换出来的json格式好看一点,可以加indent参数,格式化一下,如:

    stu_str = json.dumps(stu_info,ensure_ascii=False,indent=4)

    (2)json.dump()    不需要自己再操作一遍write,会主动写入文件。帮我们封装了处理文件的功能

    import json
    
    stu_info = {'laowang':{'cars':['BMW','Ben-z']}}
    # fw = open('stu.txt','w',encoding='utf-8')
    # fw.write(stu_str) # stu_str是上述介绍json.dumps()中得到的json
    # fw.close()
    
    fw = open('stu.json','w',encoding='utf-8')
    json.dump(stu_info,fw,indent=4)# 不需要自己再write,会主动写入文件,indent指的是写入文件后,缩进几个空格

    例子:

    #json_str = json.dumps(d,indent=4,ensure_ascii=False)
    #f.write(json_str)
    
    #json.dump(d,f,indent=4,ensure_ascii=False)#上面两行代码,可以用这一行代码实现
    hzy = [1,2,3,4]
    with open('info2.json','w',encoding='utf-8') as fw:
        json.dump(hzy,fw,ensure_ascii=False,indent=4)

    二、json写注册登录

     1 import json
     2 f = open('users.txt','a+',encoding='utf-8')  #文件句柄,文件对象
     3 f.seek(0)
     4 all_users = json.load(f)
     5 for i in range(3):
     6     u = input('user:').strip()
     7     p = input('p:').strip()
     8     cp = input('cp:').strip()
     9     if not u or not p:
    10         print('账号、密码不能为空')
    11     elif u in all_users:
    12         print('该用户已经被注册!')
    13     elif u not in all_users and cp==p:
    14         all_users[u]=p
    15         break
    16 f.seek(0)
    17 f.truncate()
    18 json.dump(all_users,f,indent=4)
    19 f.close()
    20 
    21 
    22 
    23 
    24 
    25 # username = input('username:')
    26 # pwd = input('paswd')
    27 #all_user = ['nhy','abc']
    28 #passwd = ['123456','12345']
    29 #
    30 # if username in all_user and pwd in passwd:
    31 #     print('登录成功')
     
  • 相关阅读:
    web api的新玩法
    发送邮件的小功能(.net core 版)
    Docker入门命令备份
    在控制台进行依赖注入(DI in Console)
    .net Core 2.0使用NLog
    .Net Core下使用WCF
    C#枚举最优雅的用法
    Jquery.Ajax的使用方法
    PuTTY+Xming实现X11的ssh转发
    使用XMing+putty运行linux图形界面程序
  • 原文地址:https://www.cnblogs.com/Noul/p/9166181.html
Copyright © 2020-2023  润新知