zoukankan      html  css  js  c++  java
  • Python-json模块

    json串是任何语言都可以识别的,因此json模块是一个重要的模块。

    json串实际上就是字符串。

    1、json格式

    json格式如下,必须使用双引号。

    2、读json文件

    读取json文件后,数据类型是字符串类型。可以引入json模块,用json.loads或者json.load将其变为字典类型。

    例:有一个文件products.json。

    (1)用json.loads()

    用read将文件读出来,然后把读出来的数据用json.loads()转换为字典类型。

    通过运行结果可以看出,读出啦的res格式是字符串,json.loads()将其转化为字典格式。

     

    (2)用json.load()

     可以看到json.load()可以直接传文件对象,它会帮助读文件,并且转化为字典格式。

     3、写入json文件

    同样的,导入json模块。可以用json.dumps()或者json.dump()将其转化为json格式,写入文件。

    (1)json.dumps()

    首先用json.dumps()将字典转化为json格式,存入user_info,然后将user_info写入文件。

    其中,ensure_ascii=False 是为了保证中文不被编码,能够正常显示。indent=4指的是缩进是4。

    运行之后,user_info.json文件内容为:

    (2)json.dump()

    json.dump()可以直接操作文件对象,实现的功能一样,能够直接将字典格式转化为json格式,并且写入文件。

    4、小练习

    学生信息存在json文件里,要求实现学生的注册和删除。

    stus_info.json文件内容为为:

    import json
    def op_data(filename,content=None):
        if content:#如果有内容,将内容写入json文件
            with open(filename,'w',encoding='utf-8') as fw:
                json.dump(content, fw, ensure_ascii=False, indent=4)
        else:#如果content为None,则读取json文件
            with open(filename,encoding='utf-8') as fr:
                return json.load(fr)
    
    FILE_NAME = 'stus_info.json'#定义常量
    all_stus = op_data(FILE_NAME)
    
    for i in range(3):
        choice = input('1注册,2删除,请输入:')
        if choice=='1':
            username = input('usenrame:')
            pwd = input('pwd:')
            if username not in all_stus:
                all_stus[username]=pwd
                op_data(FILE_NAME,all_stus)
                print('恭喜,%s注册成功!'%username)
        elif choice=="2":
            username = input('usenrame:')
            all_stus.pop(username)
            op_data(FILE_NAME, all_stus)
            print('%s删除成功!'%username)
        else:
            print('输入错误,请重新输入')
  • 相关阅读:
    正则表达式系统教程 [转,主要是自己备忘] 碧血黄沙
    vim打开txt文件看到^@字符
    使用PuTTY软件远程登录root被拒:access denied
    Using CustomProperties of CodeSmith
    ASP:Literal控件用法
    ASP.NET2.0中配置文件的加密与解密
    Enterprise Library 2.0 Data Access Application Block (补充)
    Infragistics中WebGrid的MultiColumn Headers设计
    世界杯揭幕战比分预测
    Enterprise Library1.0 DataAccess Application Block
  • 原文地址:https://www.cnblogs.com/zhxwind/p/8866870.html
Copyright © 2011-2022 走看看