Day15_json模块、异常捕获和正则基础

Day15_Python学习笔记

json模块

  1. 什么是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,...},键只能是字符串
"""
  1. 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格式的字符串
"""

异常捕获

  1. 什么是异常
  • 当程序出现异常,程序会直接结束,不会执行这个异常后面的代码
  1. 异常捕获
  • 异常捕获就是让程序出现异常的时候,程序不崩溃还可以继续执行

    注意:不是什么时候都需要捕获异常的,而是程序知道这个地方可能会出现异常,但是又没办法通过修改自己的代码来避免异常(因为使用者使用不当导致的异常),这个时候才需要对异常进行捕获

  1. 异常捕获实现方式
"""
方式一   -   捕获所有类型的异常
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(捕获到异常后会执行的代码)
    。。。
其他代码
"""
  1. finally -写遗书
"""
try:
    需要捕获的异常代码段
except:
    捕获到异常后需要执行的代码段
finally:
    代码段
finally后面的代码段不管在try后面发生了什么都会执行:
1)try后面的代码没有异常,代码段会执行
2)try后面的代码出现异常被捕获到,代码段会执行
3)try后面的代码出现异常没有捕获到,代码段会执行
"""
  1. 抛出异常 - 主动让程序崩溃
  • 语法:raise 异常类型


class AgeError(Exception):
    def __str__(self):
        return '年龄值错误,年龄的有效范围是0~200!'
age = 233
if age > 200 or age < 0:
    raise AgeError

正则语法

  1. 什么是正则表达式
  • 正则表达式是处理字符串数据的问题的工具(可以让很多复杂的字符串问题变得简单)
# import re (调用re模块)
# from re import fullmatch (从re模块中调用fullmatch函数)
  • fullmatch(正则表达式,字符串) - 让正则表达式和字符串进行完全匹配,匹配失败返回None

​ 注:正则表达式:r’正则表达式’ - python ;/正则表达式/ -JS

  1. 正则语法(不是python特有的),在不同语言中使用语法大同小异

    1. 普通字符 - 在正则表达式中表示符号本身的字符

    2. ’ . ’ - 匹配一个任意字符

    result = fullmatch(r'abc.', 'abcx')
    print(result)
    # r'1..2'  -  匹配一个字符串有四个字符,第一个字符是1,最后一个字符是1,最后一个字符是2,中间两个任意字符
    result = fullmatch(r'1..2', '1=-2')
    print(result)
    
    1. ’ \d ’ - 匹配一个任意数字

      re_str = r'abc\d'  # 匹配一个字符串,有4个字符,前三个是abc,最后一个字符是任意数字
      result = fullmatch(re_str, 'abc5')
      print(result)
      
    2. ’ \D ’ - 匹配一个任意非数字字符

      re_str = r'x\Dy'
      result = fullmatch(re_str, 'xpy')
      print(result)
      
    3. ’ \s ’ - 匹配一个任意空白字符 (空白字符 - 凡是能产生空白效果的字符,例如:空格,\n,\t)

      re_str = r'abc\s123'
      result = fullmatch(re_str, 'abc 123')
      print(result)
      
    4. ’ \S ’ - 匹配一个任意非空白字符

      re_str = r'abc\S123'
      result = fullmatch(re_str, r'abc\123')
      print(result)
      
    5. [字符集] - 匹配字符集的任意一个字符

      注意:一个[ ]只能匹配一个字符

      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'))
      
    6. [^字符集] - 匹配不在字符集的任意一个字符

      re_str = 'x[^a-z]y'
      print(fullmatch(re_str, 'x5y'))            #返回值不为None
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值