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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python property装饰器使用案例介绍

    Python property装饰器使用案例介绍

    这篇文章主要介绍了Python @property装饰器的用法,在Python中,可以通过@property装饰器将一个方法转换为属性,从而实现用于计算的属性,下面文章围绕主题展开更多相关详情,感兴趣的小伙伴可以参考一下
    2022-10-10
  • Python的collections模块中的OrderedDict有序字典

    Python的collections模块中的OrderedDict有序字典

    字典是无序的,但是collections的OrderedDict类为我们提供了一个有序的字典结构,名副其实的Ordered+Dict,下面通过两个例子来简单了解下Python的collections模块中的OrderedDict有序字典:
    2016-07-07
  • Python遍历某目录下的所有文件夹与文件路径

    Python遍历某目录下的所有文件夹与文件路径

    这篇文章主要介绍了Python遍历某目录下的所有文件夹与文件路径 以及输出中文乱码问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 基于Python OpenCV和 dlib实现眨眼检测

    基于Python OpenCV和 dlib实现眨眼检测

    这篇文章主要介绍了基于Python OPenCV及dlib实现检测视频流中的眨眼次数。文中的代码对我们的学习和工作有一定价值,感兴趣的同学可以参考一下
    2021-12-12
  • python中的json模块常用方法汇总

    python中的json模块常用方法汇总

    这篇文章主要介绍了python中的json模块常用方法汇总,json模块可以实现json数据的序列化和反序列化,更多相关资料介绍需要的小伙伴可以参考一下下面文章内容
    2022-06-06
  • python的多元数据类型(上)

    python的多元数据类型(上)

    这篇文章主要为大家详细介绍了python的多元数据类型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Python configparser模块封装及构造配置文件

    Python configparser模块封装及构造配置文件

    这篇文章主要介绍了Python configparser模块封装及构造配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python检查和同步本地时间(北京时间)的实现方法

    Python检查和同步本地时间(北京时间)的实现方法

    这篇文章主要介绍了Python检查和同步本地时间(北京时间)的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Python logging日志模块使用指南

    Python logging日志模块使用指南

    Python 的 logging 模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志记录提供了一组便利功能,用于简单的日志记录用法,本文就给大家简单的介绍一下Python logging日志模块使用方法,需要的朋友可以参考下
    2023-08-08
  • python 自动批量打开网页的示例

    python 自动批量打开网页的示例

    今天小编就为大家分享一篇python 自动批量打开网页的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论