Day15_Python学习笔记
json模块
- 什么是json数据
"""
json是一种通用的数据格式,主要用于不同语言之间的数据传输。
json数据格式要求:
1)有且只有一个数据
2)唯一的数据必须是json支持的数据类型的数据
json支持的数据类型:
数字类型: - 包含所有数字,表示的时候直接写,例如:90、12.5、-23、3e4...
字符串 - 用双引号引起来的数据(只能是双引号),例如:"你好","hello",...
布尔值 - 只有true和false两个值,表示的时候直接写,例如:true,false
空值 - 空值,例如:null
数组 - 相当于列表,例如:[元素1,元素2,元素3,...]
字典 - {键1:值1,键2:值2,...},键只能是字符串
"""
-
python数据和json数据之间的相互转换
python中提供一个系统模块:json,专门用来处理json和python之间的相互转换
- json数据 ->python数据
"""
json -> python
数字 int、float
字符串 str(可能会将双引号变成单引号)
布尔 bool ,true -> True 、false -> False
null None
数组 list
字典 dict
json.loads(json格式的字符串) - 将json格式的字符串中的内容转换成python数据
json格式的字符串 - 指的是字符串内容是json数据的字符串(字符串去掉引号后是合法的json数据)
"""
- python数据 ->json数据
"""
python -> json
int、float 数字
str 字符串(引号会变成双引号)
bool 布尔:True -> true、False -> false
None null
list、tuple 数组
dict 字典(key会加双引号)
json.dumps(python的数据) - 将python的数据转换成json格式的字符串
"""
异常捕获
- 什么是异常
- 当程序出现异常,程序会直接结束,不会执行这个异常后面的代码
- 异常捕获
-
异常捕获就是让程序出现异常的时候,程序不崩溃还可以继续执行
注意:不是什么时候都需要捕获异常的,而是程序知道这个地方可能会出现异常,但是又没办法通过修改自己的代码来避免异常(因为使用者使用不当导致的异常),这个时候才需要对异常进行捕获
- 异常捕获实现方式
"""
方式一 - 捕获所有类型的异常
try:
代码段1(需要捕获异常的代码)
except:
代码段2(捕获到异常后会执行的代码)
其他代码
执行过程:先执行代码段1,如果执行过程没有出现异常不会执行代码段2,直接执行后面的语句
如果执行代码段1遇到异常,直接执行代码段2,执行完代码段2再执行后面的其他语句
方式二 - 捕获指定类型异常
try:
代码段1(需要捕获异常的代码)
except 异常类型:
代码段2(捕获到异常后会执行的代码)
其他代码
方式三 - 同时捕获多种异常,针对不同的异常做相同的处理
try:
代码段1(需要捕获异常的代码)
except (异常类型1,异常类型2,异常类型3,...):
代码段2(捕获到异常后会执行的代码)
其他代码
方式四 - 同时捕获多种异常,然后针对不同异常做不一样的处理
try:
代码段1(需要捕获异常的代码)
except 异常类型1:
代码段2(捕获到异常后会执行的代码)
except 异常类型2:
代码段3(捕获到异常后会执行的代码)
。。。
其他代码
"""
- finally -写遗书
"""
try:
需要捕获的异常代码段
except:
捕获到异常后需要执行的代码段
finally:
代码段
finally后面的代码段不管在try后面发生了什么都会执行:
1)try后面的代码没有异常,代码段会执行
2)try后面的代码出现异常被捕获到,代码段会执行
3)try后面的代码出现异常没有捕获到,代码段会执行
"""
- 抛出异常 - 主动让程序崩溃
- 语法:raise 异常类型
class AgeError(Exception):
def __str__(self):
return '年龄值错误,年龄的有效范围是0~200!'
age = 233
if age > 200 or age < 0:
raise AgeError
正则语法
- 什么是正则表达式
- 正则表达式是处理字符串数据的问题的工具(可以让很多复杂的字符串问题变得简单)
# import re (调用re模块)
# from re import fullmatch (从re模块中调用fullmatch函数)
- fullmatch(正则表达式,字符串) - 让正则表达式和字符串进行完全匹配,匹配失败返回None
注:正则表达式:r’正则表达式’ - python ;/正则表达式/ -JS
-
正则语法(不是python特有的),在不同语言中使用语法大同小异
-
普通字符 - 在正则表达式中表示符号本身的字符
-
’ . ’ - 匹配一个任意字符
result = fullmatch(r'abc.', 'abcx') print(result) # r'1..2' - 匹配一个字符串有四个字符,第一个字符是1,最后一个字符是1,最后一个字符是2,中间两个任意字符 result = fullmatch(r'1..2', '1=-2') print(result)
-
’ \d ’ - 匹配一个任意数字
re_str = r'abc\d' # 匹配一个字符串,有4个字符,前三个是abc,最后一个字符是任意数字 result = fullmatch(re_str, 'abc5') print(result)
-
’ \D ’ - 匹配一个任意非数字字符
re_str = r'x\Dy' result = fullmatch(re_str, 'xpy') print(result)
-
’ \s ’ - 匹配一个任意空白字符 (空白字符 - 凡是能产生空白效果的字符,例如:空格,\n,\t)
re_str = r'abc\s123' result = fullmatch(re_str, 'abc 123') print(result)
-
’ \S ’ - 匹配一个任意非空白字符
re_str = r'abc\S123' result = fullmatch(re_str, r'abc\123') print(result)
-
[字符集] - 匹配字符集的任意一个字符
注意:一个[ ]只能匹配一个字符
re_str = r'x[1mn]y' print(fullmatch(re_str, r'x1y')) print(fullmatch(re_str, r'xmy')) print(fullmatch(re_str, r'xny')) re_str = r'x[mn\d]y' # 相当于:r'x[mn0123456789]y' print(fullmatch(re_str, 'xmy')) print(fullmatch(re_str, 'x0y')) print(fullmatch(re_str, 'xny')) re_str = r'x[1-7]y' # 相当于:r'x[mn1234567]y' print(fullmatch(re_str, 'x2y')) re_str = r'x[a-z]y' # x和y之间是小写字母 print(fullmatch(re_str, 'xay')) re_str = r'x[\da-zA-Z]y' # x和y之间是一个字母或者一个数字 print(fullmatch(re_str, 'x3y'))
-
[^字符集] - 匹配不在字符集的任意一个字符
re_str = 'x[^a-z]y' print(fullmatch(re_str, 'x5y')) #返回值不为None
-