Python 正则 re.compile 真的必需吗

 更新时间:2022年06月29日 15:39:19   作者:笑笑布丁  
本文主要介绍了Python 正则 re.compile 真的必需吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景:我在爬虫处理某个文本时,用到了re.findall(),而不是re.compile。远在新加坡的同事提出了质疑,认为以我的水平,不应该写出这样影响性能的代码,让我优化一下。我提出了反驳:既然使用了Python,就不应该太过考虑性能的问题,如果要考虑性能就使用C语言,而不是Python.他接着说:正是因为python性能不够,所以更应该考虑代码的优化,能做好就应该做到最好.最后,我没有回话,当然我也没有进行所谓的优化,以下我会给出我自己的观点.

re.compile()、re.findall()、re.search() 的作用与区别

1、re.compile()

Python里的re是支持正则表达式的模块,所谓的正则表达式就是匹配文本里符合条件的语句. re.compile()是根据包含正则表达式的字符串创建模式对象,以提高匹配效率.例如:

def test():
    regex = r'(\d+) years old'
    content = 'Alex is a 7 years old boy.'
    reg = re.compile(regex)
    result = re.search(reg, content).group()
    print(result)
result = 7

2、re.search()

re.search()是在字符串开启查找模式,如其名:search.例如:

def test():
    content = 'Alex is a 7 years old boy.'
    result = re.search(r'(\d+) years old', content).group()
    print(result)
result = 7

3、re.findall()

re.findall()是返回一个列表,列表里包含了所有符合条件的结果,例如:

def test():
    content = 'Alex is a 7 years old boy.Bob is a 12 years old boy...'
    result = re.findall(r'(\d+) years old', content)
    print(result)
result = ['7', '12']

我们分歧在他认为我应该先用 re.complile 编译好正则之后,再匹配,正如我在re.compile举得例子. 你会说他说的没错啊,作者不应该顺从同事这个合理的要求,不改就算了还要在这里发文BB.我想说的是 抛开剂量谈毒性,都是耍流氓。对于数据来说抛开量级谈性能差异,都是耍流氓. 如果要处理的 文本是百万、千万、亿这个级别,我会做优化,但是对于个别刚上万的数据来说,我觉得没必要,业务流程真的不缺那0.0X秒,多写一行re.compile的时间远大于提示的时间了. 做好代码的优化很重要,特别是面对大量数据的时候,但是我们要想清楚,有时候并不是靠那几行re.compile就能提高多大的性能,精简流程,合理的设计模式才是重点. 工作中还是要做好和同事的沟通,不要和我一样,不然迟早会被别人唾弃.

在这里插入图片描述

在这里插入图片描述

根据下面评论的提示re.compile()那一行应该放在迭代外面的代码块里,相比图中的时间速度会有所提升.😀😀.但是我们的业务逻辑是和上图一样的,而不是在迭代之外.

到此这篇关于Python 正则 re.compile 真的必需吗的文章就介绍到这了,更多相关Python 正则 re.compile内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Anaconda+Pycharm+Pytorch虚拟环境创建(各种包安装保姆级教学)

    Anaconda+Pycharm+Pytorch虚拟环境创建(各种包安装保姆级教学)

    相信很多时候大家都会用到虚拟环境,他具有可以让你快速切换不同的python版本,本文主要介绍了Anaconda+Pycharm+Pytorch虚拟环境创建,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Python利用Rows快速操作csv文件

    Python利用Rows快速操作csv文件

    Rows 是一个专门用于操作表格的第三方Python模块。只要通过 Rows 读取 csv 文件,她就能生成可以被计算的 Python 对象。本文将通过示例为大家详细讲讲Python如何利用Rows快速操作csv文件,需要的可以参考一下
    2022-09-09
  • Python常见异常类型处理

    Python常见异常类型处理

    这篇文章主要个大家分享的是Python常见异常类型处理,编写程序的过程,难免会遇到一些错误,程序逻辑又或者运行与系统发生各种冲突等等,下面我们就来看看那些我们在编程中常遇到的异常都是怎么处理的吧,需要的小伙伴可以参考一下
    2021-12-12
  • python的函数和方法(上)

    python的函数和方法(上)

    这篇文章主要为大家详细介绍了python的函数和方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • python数据结构链表之单向链表(实例讲解)

    python数据结构链表之单向链表(实例讲解)

    下面小编就为大家带来一篇python数据结构链表之单向链表(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • mac下pycharm设置python版本的图文教程

    mac下pycharm设置python版本的图文教程

    今天小编就为大家分享一篇mac下pycharm设置python版本的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python两种注释用法的示例

    python两种注释用法的示例

    这篇文章主要介绍了python两种注释用法的示例,帮助大家开始学习和使用python 注释,感兴趣的朋友可以了解下
    2020-10-10
  • 详解Python如何实现惰性导入-lazy import

    详解Python如何实现惰性导入-lazy import

    如果你的 Python 程序程序有大量的 import,而且启动非常慢,那么你应该尝试懒导入,本文分享一种实现惰性导入的一种方法,需要的可以参考一下
    2022-10-10
  • Python用requests-html爬取网页的实现

    Python用requests-html爬取网页的实现

    本文主要介绍了Python用requests-html爬取网页的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 使用Python根据一个列表的顺序对其他列表进行排序

    使用Python根据一个列表的顺序对其他列表进行排序

    这篇文章主要介绍了使用Python根据一个列表的顺序对其他列表进行排序,根据列表B中每个元素的下标来获取列表A中对应位置的元素,将其作为排序依据即可,需要的朋友可以参考下
    2023-10-10

最新评论