day16 json和文件操作

Json和文件操作

补充:抛出异常

主动让程序崩溃。

raise 异常类型

说明

raise : 关键字;固定写法

异常类型: 系统提供的异常类型(IndexError,TypeError)

​ 自定义错误类型(自定义错误类型必须是Exception的子类)

# 1. 定义input_pswd函数,提示用户输入密码,如果用户输入长度 < 8, 抛出异常,如果用户输入长度 >=8 <=15,且包含(~!@#%^*)中的至少两个字符,返回输入的密码。
def input_pswd():
    pw = input('请输入密码:')
    # 密码长度小于8
    if len(pw) < 8:
        raise PasswordError

    # 密码长度在8到15
    if 8 <= len(pw) <= 15:
        new_str = ''
        for x in pw:
            if x in '~!@#%^*' and x not in new_str:
                new_str += x
        if len(new_str) >= 2:
            return pw
        raise PasswordError

    # 密码长度大于15
    return pw


print(input_pswd())

Json数据

Json

json和xml都是通用数据格式,用于不同编程语言之间的数据交流(网络数据传输或文件数据共享)。

json相对xml更小更轻效率更高、传送速度更快;xml相对来说安全性最高。

数据格式

一个json有且只有一个数据,并且这个唯一数据必须是json支持的类型的数据。

数字整数和小数: 123、23.5、3e5
字符串必须用双引号引起来: “abc”
布尔小写的true和false
空值null(不是None!)
数组(列表)相当于Python的列表: [数据1,数据2,…]
字典相当于Python的字典,键只能是字符串: {键1:值1,键2:值2,…}

Python数据和Json数据之间的转化

python提供了json模块专门用来处理python中的json数据

Json转Python

–json–python
数字数字
字符串字符串(双引号变单引号)
布尔布尔(true -> True , false -> False)
空值空值(null -> None)
数组(列表)列表
字典字典

对应函数

json.loads(json格式字符串)

将json格式字符串对应的json数据转换成Python数据。

**!**json格式字符串:字符串内容是json数据的字符串。

content = open('data.json', encoding='utf-8').read()
result = json.loads(content)
print(result)  # {'name': 'lxl', 'age': 22}

# result = json.loads("abc")  # 报错,字符串内容是abc,不是合法的json数据
result = json.loads('"abc"')
print(result)  # abc str类型

result = json.loads("100")
print(result)  # 100 int类型

result = json.loads("true")
print(result)  # True bool类型

Python转Json

–python-json
int,float数字
str字符串(双引号变单引号)
boolTrue -> true , False -> false
Nonenull
列表、元组数组
字典字典

对应函数

json.dumps(Python数据)

将指定Python数据转换成对应的json格式字符串。

json.dumps(100)  # 'abc'
json.dumps('abc')  # '"abc"'
json.dumps(True)  # true
result = json.dumps({'a': 10, 20: 30, 'name': 'xiaoming', 'isMarried': True})
print(result, type(result))  # {"a": 10, "20": 30, "name": "xiaoming", "isMarried": true} <class 'str'>
xiaoming', 'isMarried': True})
print(result, type(result))  # {"a": 10, "20": 30, "name": "xiaoming", "isMarried": true} <class 'str'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值