python入门基础day15

## 18.01_Python语言基础(排列)(了解)
* 在python中使用iterTools模块来完成排列
* 从n不同的元素中去m个元素,会按照特定的顺序排成一列-----》排列
* 格式:
    * iterTools.permutations(序列,排列个数)
    
    [1,2,3,4]  2
#### 排列案例:
#
    import itertools
    mylst = list(itertools.permutations([1,2,3,4],2))#12
    print(mylst)
    mylst = list(itertools.permutations([1,2,3,4],3))#24
    print(mylst)

#### 排列可能出现的次数
* n!/(n-m)!


## 18.02_Python语言基础(组合)(了解)
* itertolls模块
* combinations(序列,组合的数量)
#### 组合案例    
    import itertools
    
    mylist = list(itertools.combinations([1,2,3,4,5],3))
    print(mylist)
    """
    m    n
    5    5   1
    5    4   5
    5    3   10
    5    2   10
    
    n!/(m!*(n-m)!)


## 18.03_Python语言基础(破解密码)(练习)
#### 破解数字和字母组成的六位数的密码
#### 生成6为数字密码
    import itertools

    list02 = itertools.product("012345", repeat=6)
    list03 = list(list02)
    # print((list03))
    count = 0
    str = ""
    for l in list03:
        # print(l)
        count += 1
        str = "".join(l)
        print(str)
    print(count)
    print(str)
    print(type(str))
#### 生成字母和数字组成密码
#
    
    # 获取六位字符
    # 6789qweryuiopasdfghjklzxcvbnmqwerqQWERTYUIOPASDFGHJKLZXCVBNM
    password = list(itertools.product("012345", repeat=6))
    print(type(password))
    # 定义密码字符变量
    password_str = ""
    # 开始破解
    for i in password:
        password_str = "".join(i)
        # 如果找到则破解完成
        if password_str == "543210":
            break
    print(password_str)


## 18.04_Python语言基础(正则表达式的概述)(重点)
* 开发中会有大量的字符串的处理,字符串的格式化的校验
    * 场景:
           * 判断一个字符串否是手机号
* 文件中,查找以qianfeng开头的语句
* 定义:
   * 正则表达式:   regex   re
* python 内置模块   re   ---->正则表达式

## 18.05_Python语言基础(re模块的基本操作)(重点)

* Python中内置re模块
* 在python中需要通过对正则表达式对字符串进行匹配,需要使用re模块

#### re模块的使用案例:
#
    #导入re模块
    # import re
    #使用match方法进行匹配
    """
    match 格式:
       match(正则表达式(Match),需要匹配的字符串(object))
    
    """
    # reslut = re.match(正则表达式,需要匹配的字符串)
    #提取数据  group()函数
    # reslut.group()

>**说明:**
re.match()用来进行正则表达式匹配检查方法,<br/>
如果字符串匹配正则,match方法返回的是匹配的对象(MAtch,object)<br/>
否则返回None(注意不是"")
***
#
    import re
    reslut = re.match("qianfeng","qianfeng.com")
    reslut1 = re.match("haha","qianfeng.com")
    print(reslut.group())
    print(reslut1)


## 18.06_Python语言基础(表示字符)(重点)

* 正则表达式的单个字符匹配

    字符      功能
    .        匹配任意1个字符(除\n)
    []       匹配[]中列举的字符
    \d       匹配数字(0~9)
    \D       匹配非数字,即不是数字
    \s       匹配空白   空格  tab
    \S       匹配非空白
    \w       匹配单词字符,a~z A~Z 0~9 _
    \W       匹配非单词字符
#### 正则表达式的单个字符匹配案例:
#
    import re
    
    ret = re.match(".","a")
    print(ret.group())
    
    ret = re.match(".","M")
    print(ret.group())
    
    ret = re.match(".","1.0")
    print(ret.group())
    
    #如果hello的首字母小写,那么正在表达式的匹配需要小写吗?
    ret = re.match("h","hello python")
    print(ret.group())
    ret = re.match("H","Hello python")
    print(ret.group())
    
    ret = re.match("[hH]","hello python")
    print(ret.group())
    
    ret = re.match("[hH]","Hello python")
    print(ret.group())
    
    #匹配0~9的数字
    ret = re.match("[0123456789]","7hello python")
    print(ret.group())
    ret = re.match("[0-9]","7hello python")
    print(ret.group())
    ret = re.match("\d","5hello python")
    print(ret.group())
    
    ret = re.match("嫦娥1号","嫦娥1号发射成功")
    print(ret.group())
    ret = re.match("嫦娥2号","嫦娥2号发射成功")
    print(ret.group())
    ret = re.match("嫦娥3号","嫦娥3号发射成功")
    print(ret.group())
    
    ret = re.match("嫦娥\d号","嫦娥1号发射成功")
    print(ret.group())
    ret = re.match("嫦娥\d号","嫦娥2号发射成功")
    print(ret.group())
    ret = re.match("嫦娥\d号","嫦娥3号发射成功")
    print(ret.group())

## 18.07_Python语言基础(转义字符和原始字符)(重点)
### 转义字符和原始字符案例:
    import re
    mm = r"c:\a\b\c"
    print(mm)
    mm = "c:\\a\\b\\c"
    print(mm) 
    
    reslut = re.match("c:\\\\",mm).group()
    print(reslut)#c:\
    
    reslut1 = re.match("c:\\\\a",mm).group()
    print(reslut1)#c:\a
    
    reslut = re.match(r"c:\\", mm).group()
    print(reslut)  
    
    reslut1 = re.match("c:\\\\a", mm).group()
    print(reslut1)  
    
    """
    python中字符串前面加上r表示原生字符串
    ”\“:转义字符
    """
    ret = re.match("c:\\\\a", mm).group()    
    print(ret)

## 18.08_Python语言基础(表示数量)(重点)
#### 表示数量
    字符        功能
    *      表示匹配前一个字符出现0次或者无限次,即可有可无
    +      表示匹配前一个字符出现1次或者无限次,即至少一次
    ?     表示匹配前一个字符出现1次或则0次,即,要么一次,要么没有
    
    {m}    表示匹配前一个字符出现m次
    {m,}   表示前一个字符至少出现m次
    {m,n}   表示匹配字符出现从m到n次
    
    案例:
    需求:一个字符串第一个字母为大写字符,后面都是小写并且这些小写字母可有可无


#### 表示数量案例:
    import re
    ret = re.match("[A-Z][a-z]*","Mm").group()
    print(ret)
    ret1 = re.match("[A-Z][a-z]*","Aabcdef").group()
    print(ret1)
    
    """
    匹配变量名是否有效
    """
    
    ret2 = re.match("[a-zA-Z_]+[\w_]*","name1").group()
    print(ret2)
    
    
    ret3 = re.match("[a-zA-Z_]+[\w]*","m_name").group()
    print(ret3)
    
    """
    案例:
    匹配0~99之间的数字
    """
    ret4 = re.match("[1-9][\d]*","5").group()
    print(ret4)

## 18.09_Python语言基础(表示边界)(重点)
#
    字符         功能
    ^        匹配字符串的开头
    $        匹配字符串的结尾
    \b      表示匹配一个单词的边界


#### 匹配@XXX.com邮箱地址
#
    result = re.match("[\w]{4,20}@126\.com", "[email protected]")
    print(result.group())

    result = re.match("[\w]{4,20}@126\.com$", "[email protected]")
    print(result.group())
    
    result = re.match("[\w]{4,20}@126\.com$", "[email protected]")
    print(result.group())
    
    
    #\b--匹配单词--ver
    ret2 = re.match(r".*\bver\b","ho ver abc").group()
    print(ret2)
    
    # 报错
    # ret3 = re.match(r".*\bver\b", "ho verabc").group()
    # print(ret3)
    
    # 报错
    ret4 = re.match(r".*\bver\b", "hover abc").group()
    print(ret4)


## 18.10_Python语言基础(匹配分组)(重点)
#
    字符            功能
    |           匹配左右任意一个表达式
    (ab)        将括号中字符作为分组
    \num         引用分组num匹配到字符串

#### 匹配分组案例
    import re
    # | 连接表达式
    #需求匹配0~100之间的数字
    result = re.match("100|[0-9]?\d", "90").group()
    print(result)
    result = re.match("100|[0-9]?\d", "100").group()
    print(result)
    result = re.match("100|[0-9]?\d$", "100").group()
    print(result)
    result = re.match("100|[0-9]?\d$", "110").group()
    print(result)

#### 匹配邮箱案例:
    #案例:匹配163 /  126 / qq  邮箱之间的数字
    #()
    result = re.match("\w{6,20}@(hotmail|126|163|qq)\.com", "[email protected]").group()
    print(result)
    
    result = re.match("[\w\d]{6,20}@(hotmail|126|163|qq)\.com", "[email protected]").group()
    print(result)

####匹配html标签
   # <html>haha11_#$%^</html>

猜你喜欢

转载自blog.csdn.net/qq_42336700/article/details/81531711