day14json和异常

本文详细介绍了Python中JSON数据的处理,包括JSON的格式、与Python数据类型的转换,以及如何捕获和处理异常。同时,展示了如何使用`json`模块进行数据的序列化和反序列化,并提供了异常捕获的多种方式,如try-except-finally语句的使用。此外,还演示了如何主动抛出异常以结束程序。
摘要由CSDN通过智能技术生成

json和异常

1.json数据

1.什么是json
json是一种数据格式;几乎所有的高级语言都支持这种数据格式的处理
所以json主要用于不同语言之间的数据交流

2.json格式
json格式的要求:
1)一个json有且只有一个数据
2)唯一的这个数据必须是json支持的数据类型的数据

​ json支持的数据类型:
​ 1)数字类型(Number) - 所有数字对应的类型,表示的时候直接写。
​ 2)字符串(String) - 用双引号引起来的字符集,例如:“adc”、"“abc\n123、”\u4e00"
​ 3)布尔(Boolean) - 只有 true 和 false 两个值
​ 4)数组(Array) - 相当于python中的列表
​ 5)字典(Dictionary) - 相当于python中的字典,但key只能是字符串
​ 6)空值(null) - null,相当于python中的None

3.json数据和python数据之间的转换
python中提供了一个json模块,专门用来提供处理json数据相关的函数(使用时需导入)
1) json数据转python数据
json -> python
数字 int/float
字符串 字符串(可能会将"变成’)
布尔 布尔(首字母会变成大写的)
数组 列表(里面相应的元素也会相应转换)
字典 字典(里面相应的元素也会相应转换)
空值(null) None

json.loads(json格式的字符串) - 把json格式的字符串转换成对应的python数据

print(json.loads('"abc"'))  # abc
print(json.loads('100'))    # 100
print(json.loads('["abc", 123, true, null]'))   # ['abc', 123, True, None]

# 练习:
f = open('date.json', encoding='utf-8')
data = json.loads(f.read())
for item in data["newslist"]:
    print(item['title'])
  1. python数据转json数据
    python -> json
    int 数字
    float 数字
    字符串 字符串(单引号会变成双引号)
    布尔 布尔(首字母会变成小写)
    列表、元组 数组(元素也会自动转换)
    字典 字典(key全部会自动变成字符串)
    None null

​ json.dumps(python数据) - 将指定的python数据转换成对应的json格式字符串

print(json.dumps('abc'))    # "abc"
print(json.dumps(100))   # 100
print(json.dumps(['abc', 123, True, None]))  # "["abc", 123, true, null]"
# print(json.dumps(({10, 20, 30, 40}))  报错  集合不能转换成json数据

2.异常捕获

1.什么是异常
异常救赎错误(程序报错救赎程序出现异常)
当执行程序的过程中出现异常,程序会直接结束(实际是线程结束)

2.什么是捕获异常
1) 异常捕获就是在程序出现异常的时候不崩溃,继续执行
2) 不是任何异常可以捕获的,只有在明知道某段代码段会出现异常但是又不能或者不方便通过修改代码来避免,这个时 候就可以对异常捕获

3.怎么捕获异常
方法一:捕获代码段1中的所有异常
try:
需要捕获异常的代码段1
except ValueError:
捕获到异常后会执行的代码段2
其他代码
执行过程:先执行try里面的代码段,执行过程中出现异常,程序不崩溃,马上执行except后面的代码,执行完才执行其 他代码
如果执行try里面的代码段,执行过程未出现异常,不执行except后面的代码,直接执行其他代码

​ 方法二:捕获指定异常
​ try:
​ 需要捕获异常的代码段
​ except 异常类型:
​ 捕获到异常后会执行的代码段
​ 其他代码

​ 方法三:针对捕获到的不同异常,做相同的处理
​ try:
​ 需要捕获异常的代码段
​ except (异常类型1,异常类型2,…):
​ 捕获到异常后会执行的代码段
​ 其他代码

​ 方法四:针对捕获到的不同异常,做不同的处理
​ try:
​ 需要捕获异常的代码段
​ except 异常类型1:
​ 捕获到异常后会执行的代码段
​ except 异常类型2:
​ 捕获到异常后会执行的代码段
​ …
​ except:
​ 捕获到异常后会执行的代码段

# # 方法一
try:
    x = int(input("请输入一个数字: "))
except:
    print("您输入的不是数字!")

# 方法二
try:
    print({'a': 10}['b'])
except KeyError:
    print('出现异常')

4.finally - 写遗书
try-except-finally 语句无论是否发生异常都将执行最后的代码

5.抛出异常 - 主动让程序崩溃
语法:raise 异常类型
异常可以是系统异常类型,也可以是自定义的异常类型

def func2(age: int):
    if age <0 or age > 150:
        raise ValueError
    if age >= 18:
        print('成年人')
    else:
        print('未成年')


func2(41241)    # ValueError
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值