zoukankan      html  css  js  c++  java
  • 【Python3 爬虫】U19_正则表达式之re模块其他函数

    re模块有以下这些函数:

    • compile用于编译正则表达式,生成一个Pattern对象
    • match方法:从开始位置开始查找,一次匹配
    • search方法:从任何位置开始查找,一次匹配
    • findall方法:全部匹配,返回列表
    • finditer方法:全部匹配,返回跌代器
    • split方法: 分割字符串,返回列表
    • sub方法:替换

    使用re模块的步骤

    a. 使用 compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象
    b. 通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果,一个 Match 对象。
    c. 最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作

    1.compile方法

    对于一些经常要用到的正则表达式,可以使用complie进行编译,然后在使用的时候可以直接拿过来用,执行效率会更快。而且compile还可指定flag=re.VERBOSE,在写正则表达式的时候做好注释,案例如下:

    import re
    text = 'the price is 19.5'
    pat = re.compile(r"""
                    d+ # 小数点前面的数字
                    .? # 小数点
                    d+ # 小数点后面的数字
                    """,re.VERBOSE)
    ret = re.search(pat,text)
    print(ret.group())
    
    

    打印结果:19.5

    2.findall方法

    findall可以获取所有的匹配结果并且返回一个列表,案例如下:

    import re
    text = "Apple's price is $19,Orange's price is $20"
    ret = re.findall('$d+',text)
    print(ret)
    

    打印结果:['$19', '$20']

    3.finditer方法

    finditer 方法的行为跟 findall 的行为类似,也是搜索整个字符串,获得所有匹配的结果。但它返回一个顺序访问每一个匹配结果(Match 对象)的迭代器。

    import re
    text = "Apple's price is $19,Orange's price is $20"
    
    rets = re.finditer('$d+',text)
    for ret in rets:
        print(ret.group())
    

    打印结果:
    $19
    $20

    4.split方法

    split 方法按照能够匹配的子串将字符串分割后返回列表,实战案例如下:

    import re
    text = "hello china ni hao"
    ret = re.split('[^a-zA-z]',text)
    print(ret)
    

    打印结果:['hello', 'china', 'ni', 'hao']

    5.sub方法

    sub方法用来替换字符串,将匹配到的字符串替换为其他字符串。

    import re
    text = "Apple's price is $19,Orange's price is $20"
    ret = re.sub('$d+','0',text)
    print(ret)
    

    6.实战案例:去掉标签<>取内容

    import re
    text = "<li title='as'>ISBN:12334</li>"
    ret = re.sub('<.+?>',"",text).replace("ISBN:","")
    print(ret)
    
    

    输出结果:12334

    上述代码也可以指定替换标签的数量,例如:只想替换第一个标签

    import re
    text = "<li title='as'>ISBN:12334</li>"
    ret = re.sub('<.+?>',"@@@",text,1)
    print(ret)
    

    打印结果:@@@ISBN:12334

  • 从上述例子可以看到可以通过指定替换的数量根据自己需要进行替换

查看全文
  • 相关阅读:
    clickhouse-(04)-常用高阶函数
    clickhouse-(03)-库和表引擎
    clickhouse-(02)-适合的场景
    clickhouse-(01)-安装
    MySQL实战45讲-笔记
    Linux软连接和硬链接
    直接访问和间接访问
    指针和地址的区别
    配置Apache 运行CGI---------笔记
    配置Apache 运行CGI
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12619729.html
  • Copyright © 2011-2022 走看看