正则表达式、装饰器、try

import re


    #### re模块简介 ####


# 例子中pattern位置是一个字符串,使用时是一个正则表达式


r"""
re.match函数
格式:match(pattern, string, flags=0)
参数:
    pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标志位,用于控制正则表达式的匹配方式
        re.I    忽略大小写
        re.L    做本地化识别
        re.M    多行匹配,影响^和$
        re.S    是.匹配包括换行符在内的所有字符
        re.U    根据Unicode字符解析字符,影响\w, \W, \b, \B
        re.X    使更灵活的方式理解正则表达式
功能:尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配,返回None
"""
# www.baidu.com
print(re.match("www", "wwW.baiud.com", flags=re.I))
print("- - - - - - -")


r"""
re.search函数
格式:search(pattern, string, flags=0)
参数:
    pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标志位
功能:扫描整个字符串,返回第一个成功匹配
"""
print(re.search("raven", "which Raven is true raven", flags=re.I))
print("- - - - - - -")


r"""
re.findall函数
格式:findall(pattern, string, flags=0)
参数:
    pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标志位
功能:扫描整个字符串,返回所有匹配值
"""
print(re.findall("raven", "which Raven is true raven", flags=re.I))
print("- - - - - - -")






import re


    #### pattern正则表达式 ####


# 匹配单个字符
r"""(字符串前面加r表示使用真实字符,不作转义。例如\t为真实字符,不作为制表符。)
"."         匹配除换行符以外的字符。
[]          字符集合,匹配中括号中任意一个包含的字符。
[a-z]       匹配任意一个小写字母。
[A-Z]       匹配任意一个大写字母。
[0-9]       匹配任意一个数字。
[0-9a-zA-Z] 匹配任意一个大写字母、小写字母、数字。
[0-9a-zA-Z_]匹配任意一个大写字母、小写字母、数字和下划线。
[^sam]      匹配除了's', 'a', 'm'这几个字母外所有字符。
            ^为脱字符,表示不匹配集合中的字符。
\d          相当于[0-9]。
\D          相当于[^0-9]。
\w          相当于[0-1a-zA-Z_]数字字母和下划线。
\W          相当于[^0-9a-zA-Z_]非数字、字母和下划线。
\s          [ \f\n\r\t]匹配任意空白字符(空格,换行,回车,换页,制表)。
\S          [^ \f\n\r\t]匹配任意非空白字符(空格,换行,回车,换页,制表)。
"""


# 匹配多个字符
"""
(xyz)    xyz作为一个整体匹配。
x?       匹配0个或者1个x。
x*       匹配0个或者任意多个x(.*表示匹配0个或者任意多个字符,换行符除外)。
x+       匹配至少一个x
x{n}     匹配n个x
x{n,m}   匹配至少n个至多m个x
x|y      匹配x或者y
"""




# 注释: part2
str = " part2 "
# 第2,3个/为转义字符,表示*作为字符串,并不是正则表达式
print(re.findall("/", str))


    #### finditer函数 ####
import re
"""
re.finditer函数
格式:finditer(patter, string, flags)
功能:与findall类似,扫描整个字符串,返回一个迭代器。
参数:
patter:匹配的正则表达式
string:匹配的字符串
flags:标志位
"""
str = "sam is a good man, sam is a nice man, sam is a very handsome man!"
d = re.finditer(r"(sam)", str)
while True:
    try:
        l = next(d)
        print(l)
    except StopIteration as e:
        break


    #### 替换字符串 ####
import re


"""
字符串的替换和修改
sub(pattern, repl, string, count=0, flags=0)
subn(pattern, repl, string, count=0, flags=0)
参数:
    pattern: 正则表达式
    repl: 指定的用来替换的字符串
    string: 字符串
    count: 最多替换次数
    flags: 标志位
功能:在目标字符串中用正则表达式的规则匹配字符串,
    并替换成指定的字符串,如果不指定次数则匹配替换全部字符换 
区别:sub返回被替换的字符串
    subn返回一个元组,第一个元组为被替换的字符串,第二个元组为替换次数
"""
str = "sam is a good man, sam is a nice man, sam is a very handsome man!"
sub = re.sub("sam", "Tom", str, count=2)
subn = re.subn("sam", "Tom", str, count=1)
print(sub)
print(subn)




"""
装饰器
是一个模块,把一个函数当做一个参数返回一个替代版的函数
本质上是一个返回函数的函数
"""


    #### 简单的装饰器 ####
def func1():
    print("this is func1.")


def outer(func):
    def inner():
        print("*******************")
        func()
    return inner


f = outer(func1)
f()




    #### 复杂一点的装饰器,带一个参数 ####
def outer(func):
    def inner(age2):
        if age2 < 0:
            age2 = 0
        func(age2)
    return inner


#使用@将装饰器应用到函数中
#@outer相当于say = outer(say)
@outer
def say(age1):
    print("i am %d years old" % (age1))


say(-100)




    #### 通用装饰器 ####
"""
def outer(func):
    def inner(*args, **kwargs):
        #添加修饰的功能
        func(*args, **kwargs)
    return inner
"""
def outer(func):
    def inner(*args, **kwargs):
        print("$$$$$$$$$")
        func(*args, **kwargs)
    return inner


@outer
def say(name, age):
    print("my name is %s, i am %d years old." % (name, age))


say("sam", 18)






"""
异常处理
当程序遇到错误,越过错误继续向下执行
try - except - else
格式:
try:
    语句t
except 错误代码 as e:
    语句2
except 错误代码 as e:
    语句
    ... ...
except 错误代码 as e:
    语句n
else:
    语句e
注意:else语句可有可无
    except可以不写错误代码。
    使用except带着多种异常except(错误码1, 错误码2)
作用:用来检测try语句块中的错误,从而让except语句捕获错误信息
逻辑:当程序执行到try - except - else语句时
    执行到try出现错误,匹配错误码对应的语句
    没有错误,执行else语句


try - except - finally
作用:无论是否有错误,都执行finally语句
    finally:
        语句
"""


try:
    print(3 / 1)
except ZeroDivisionError as e:
    print("1")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值