• python 16 days


    python 16 days

    常用模块

    正则:

     re模块是一个和正则表达式相关的模块

    正则表达式和python没关系

    正则表达式--->str:

    1,监测字符串是否符合要求

    2,从大段的文字中找到符合要求的内容

    number = input('你的名字')
    if number.isdigit() and len(number)==11  
        and number.startswith('13'):
        print('是合法的手机号')
    else:
        pass
    例题展示
    你的名字
    结果展示
    转换
    '\n' --> ' '
    '\\n' --> '\n'
    r'\n'
    r' '

    re模块

    三中最基础的查找方法
    findall search match

    findall查找:
    pattern正则表达式, string待匹配的字符串, flags=0
    ret = re.findall('d+','eva123egon4yuan567')
    print(ret)  # ['123', '4', '567']
    例题展示
    ['123', '4', '567']
    结果展示

    search查找:

    ret2 = re.search('d+','eva123egon4yuan567')
    print(ret2) # 不会直接返回结果,而是返回第一个匹配的变量
    print(ret2.group()) # 使用这个变量.group()得到返回的结果
    ret3 = re.search('d+','eva')
    例题展示
    <_sre.SRE_Match object; span=(3, 6), match='123'>
    123
    结果展示

    match查找:

    ret4 = re.match('d+','321eva123egon4yuan567')
    print(ret4) # 不会直接返回结果,而是在正则表达式的开始加上一个^
    print(ret4.group()) # 不会直接返回结果,而是返回第一个匹配的变量
    例题展示
    <_sre.SRE_Match object; span=(0, 3), match='321'>
    321
    结果展示

    1,'alex27egon18yuan40',需求,把这串代码里的名字用正则表达式出来。

    ret = re.split('d+','alex27egon18yuan40')
    print(ret)
    例题展示
    ['alex', 'egon', 'yuan', '']
    结果展示

    节省时间:

    obj = re.compile('d{3}')  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
    # # 正则表达式 --> python可以理解的 -->执行
    ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
    print(ret.group())  #结果 : 123
    例题展示
    123
    结果展示
    obj = re.compile('d{3}')  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
    ret = obj.findall('abc123eeee456as12') #正则表达式对象调用search,参数为待匹配的字符串
    print(ret)
    例题展示
    ['123', '456']
    结果展示

    import re:节省时间

    import re   # 节省空间
    ret = re.finditer('d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
    print(ret)  # <callable_iterator object at 0x10195f940>
    print(next(ret).group())  #查看第一个结果
    print(next(ret).group())  #查看第二个结果
    print([i.group() for i in ret])  #查看剩余的左右结果
    例题展示
    3
    4
    ['7', '8', '4']
    结果展示

    findall的用法:

    ret = re.findall('www.(baidu|oldboy).com', 'www.baidu.com')
    print(ret)
    # findall默认只显示分组中的
    例题展示
    ['baidu']
    结果展示

    提取网站的用法:

    ret = re.findall('www.(?:baidu|oldboy).com', 'www.baidu.com')
    print(ret)
    例题展示
    ['www.baidu.com']
    结果展示
    ret=re.split("(d+)","eva3egon4yuan")
    print(ret) #结果 : ['eva', 'egon', 'yuan']
    例题展示
    ['eva', '3', 'egon', '4', 'yuan']
    结果展示
    import re
    
    ret = re.search("<(?P<tag>w+)>(w+)</(?P=tag)>","<h1>hello</h1>")
    print(ret)
    print(ret.group())
    print(ret.group('tag'))
    例题展示
    <_sre.SRE_Match object; span=(0, 14), match='<h1>hello</h1>'>
    <h1>hello</h1>
    h1
    结果展示
    ret = re.search('(?P<flag>.+).*(?P=flag)','***abc***')
    print(ret.group())
    
    
    
    ret = re.search('(.+).*\1','-123-')
    print(ret.group())
    例题展示
    ***abc***
    
    
    
    -123-
    结果展示
    exp = "1-2*(60+(-40.35/5)-(-4*3))"
    ret = re.findall('d+.d+|(d+)',exp)
    print(ret)
    ret.remove('')
    print(ret)
    例题展示
    ['1', '2', '60', '', '5', '4', '3']
    ['1', '2', '60', '5', '4', '3']
    结果展示

    爬虫练习:

    
    


























  • 相关阅读:
    终于在园子里安家了
    Ajax简单应用,检测用户名是否存在 (转)
    ASP.NET 2.0防止同一用户同时登陆方法一(转)
    .NET:七道asp.net页面传值题(转)
    蛙蛙推荐:SQLServer优化资料整理(转)
    我说看起来怎么这么眼熟
    ASP.NET 2.0防止同一用户同时登陆方法二(转)
    Javascirpt Function 不能命名为reset
    关于Jquery ajax调用一般处理程序Handler报500 错误(Internal Server Error)解决办法
    智能匹配
  • 原文地址:https://www.cnblogs.com/juxiansheng/p/9069046.html
Copyright © 2020-2023  润新知