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'])
- 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