Python利用正则表达式从字符串提取数字

 更新时间:2022年02月07日 11:00:47   作者:Buer_zhu  
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,下面这篇文章主要给大家介绍了关于Python利用正则表达式从字符串提取数字的相关资料,需要的朋友可以参考下

前言

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

利用正则表达式从字符串提取数字

主要用到下面几个函数

(1)compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

语法格式为:

re.compile(pattern[, flags])

参数:

  • pattern : 一个字符串形式的正则表达式
  • flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
  • re.I 忽略大小写
  • re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
  • re.M 多行模式
  • re.S 即为' . '并且包括换行符在内的任意字符(' . '不包括换行符)
  • re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
  • re.X 为了增加可读性,忽略空格和' # '后面的注释

(2)re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法:

re.match(pattern, string, flags=0)

(3)re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

re.search(pattern, string, flags=0)

注:

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

(4)findall

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

语法格式为:

findall(string[, pos[, endpos]])

参数:

string 待匹配的字符串。
pos 可选参数,指定字符串的起始位置,默认为 0。
endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。

下面是实现的具体方法:

def findnum(string):
    comp=re.compile(-?[1-9]\d*)
    list_str=comp.findall(string)
    list_num=[]
    for item in list_str:
        item=int(item)
        list_num.append(item)
    return list_num

re.compile()的一些匹配参数:

  • [1-9]\d*      正整数
  • -[1-9]\d*   负整数
  • -?[1-9]\d* 整数
  • [1-9]\d*|0  非负整数
  • -[1-9]\d*|0   非正整数
  • [1-9]\d*\.\d*|0\.\d*[1-9]\d*$   正浮点数
  • -([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  负浮点数
  • -?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  浮点数

附python正则表达式抽取文本中的时间日期

使用python的正则表达式抽取文本中的年月日信息,如2020年5月19日。

def find_time(yanbao_txt, entity):
    paras = [para.strip() for para in yanbao_txt.split('\n') if para.strip()][:5]
    for para in paras:
        ret = re.findall(r'(\d{4})\s*[\./年-]\s*(\d{1,2})\s*[\./月-]\s*(\d{1,2})\s*日?', para)
        if ret:
            year, month, day = ret[0]
            time = '{}/{}/{}'.format(year, month.lstrip(), day.lstrip())
            return time
    return None

总结

到此这篇关于Python利用正则表达式从字符串提取数字的文章就介绍到这了,更多相关Python正则字符串提取数字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python读取图片EXIF信息类库介绍和使用实例

    Python读取图片EXIF信息类库介绍和使用实例

    这篇文章主要介绍了Python读取图片EXIF信息类库介绍和使用实例,例如Python Imaging Library、EXIF.py等,需要的朋友可以参考下
    2014-07-07
  • Python使用Selenium实现淘宝抢单的流程分析

    Python使用Selenium实现淘宝抢单的流程分析

    这篇文章主要介绍了Python使用Selenium实现淘宝抢单的流程分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python自带tkinter库实现棋盘覆盖图形界面

    python自带tkinter库实现棋盘覆盖图形界面

    这篇文章主要为大家详细介绍了python自带tkinter库实现棋盘覆盖图形界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 对pandas进行数据预处理的实例讲解

    对pandas进行数据预处理的实例讲解

    下面小编就为大家分享一篇对pandas进行数据预处理的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python Matplotlib绘制多子图详解

    Python Matplotlib绘制多子图详解

    Matplotlib是Python中最受欢迎的数据可视化软件包之一,它是 Python常用的2D绘图库,同时它也提供了一部分3D绘图接口。本文将详细介绍如何通过Matplotlib绘制多子图,以及合并图例和调整子图间距,需要的可以参考一下
    2022-02-02
  • 图文详解WinPE下安装Python

    图文详解WinPE下安装Python

    这篇文章主要以图文结合的方式详细介绍了WinPE下安装Python的具体实现步骤,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 使用Python快速遍历文件夹下所有文件的方法总结

    使用Python快速遍历文件夹下所有文件的方法总结

    在日常的编程工作中,我们经常会遇到需要遍历文件夹下所有文件的情况,无论是处理大量的数据文件、进行文件系统的分析,还是实现复杂的自动化任务,高效地遍历文件夹下的所有文件都是一项非常重要的技能,在本文中,我们将深入探讨如何使用 Python 快速遍历文件夹下的所有文件
    2024-11-11
  • numpy linalg模块的具体使用方法

    numpy linalg模块的具体使用方法

    这篇文章主要介绍了numpy linalg模块的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Python Requests库及用法详解

    Python Requests库及用法详解

    Requests库作为Python中最受欢迎的HTTP库之一,为开发人员提供了简单而强大的方式来发送HTTP请求和处理响应,本文将带领您深入探索Python Requests库的世界,我们将从基础知识开始,逐步深入,覆盖各种高级用法和技巧,感兴趣的朋友一起看看吧
    2024-06-06
  • 在OpenCV里使用Camshift算法的实现

    在OpenCV里使用Camshift算法的实现

    这篇文章主要介绍了在OpenCV里使用Camshift算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论