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写的Tkinter程序屏幕居中方法

    Python写的Tkinter程序屏幕居中方法

    这篇文章主要介绍了Python写的Tkinter程序屏幕居中方法,Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口,需要的朋友可以参考下
    2015-03-03
  • Python入门教程(三十三)Python的字符串格式化

    Python入门教程(三十三)Python的字符串格式化

    这篇文章主要介绍了Python入门教程(三十三)Python的字符串格式化,为了确保字符串按预期显示,我们可以使用 format()方法对结果进行格式化,需要的朋友可以参考下
    2023-05-05
  • python3 webp转gif格式的实现示例

    python3 webp转gif格式的实现示例

    这篇文章主要介绍了python3 webp转gif格式的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 使用NumPy进行数组数据处理的示例详解

    使用NumPy进行数组数据处理的示例详解

    NumPy是Python中用于数值计算的核心包之一,它提供了大量的高效数组操作函数和数学函数,可以支持多维数组和矩阵运算。本文主要为大家介绍了NumPy进行数组数据处理的具体方法,需要的可以参考一下
    2023-03-03
  • Pandas聚合运算和分组运算的实现示例

    Pandas聚合运算和分组运算的实现示例

    这篇文章主要介绍了Pandas聚合运算和分组运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • python GUI库图形界面开发之PyQt5开发环境配置与基础使用

    python GUI库图形界面开发之PyQt5开发环境配置与基础使用

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5开发环境配置与基础使用,需要的朋友可以参考下
    2020-02-02
  • Pytorch限制或增加CPU使用的核数方式

    Pytorch限制或增加CPU使用的核数方式

    这篇文章主要介绍了Pytorch限制或增加CPU使用的核数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python箱型图处理离群点的例子

    Python箱型图处理离群点的例子

    今天小编就为大家分享一篇Python箱型图处理离群点的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python正则表达式匹配ip地址实例

    Python正则表达式匹配ip地址实例

    这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了re模块的用法,该实例非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • python抓取网页时字符集转换问题处理方案分享

    python抓取网页时字符集转换问题处理方案分享

    python学习过程中发现英文不好学起来挺困难的,其中小弟就遇到一个十分蛋疼的问题,百度了半天就没找到解决办法~囧~摸索了半天自己解决了,记录下来与君共勉。
    2014-06-06

最新评论