python正则表达式从字符串中提取数字的思路详解

python从字符串中提取数字

使用正则表达式,用法如下:

## 总结
## ^ 匹配字符串的开始。
## $ 匹配字符串的结尾。
## \b 匹配一个单词的边界。
## \d 匹配任意数字。
## \D 匹配任意非数字字符。
## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。
## x* 匹配0次或者多次 x 字符。
## x+ 匹配1次或者多次 x 字符。
## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次。
## (a|b|c) 要么匹配 a,要么匹配 b,要么匹配 c。
## (x) 一般情况下表示一个记忆组 (remembered group)。你可以利用 re.search 函数返回对象的 groups() 函数获取它的值。
## 正则表达式中的点号通常意味着 “匹配任意单字符”

解题思路:

既然是提取数字,那么数字的形式一般是:整数,小数,整数加小数;

所以一般是形如:----.-----;

根据上述正则表达式的含义,可写出如下的表达式:"\d+\.?\d*";

\d+匹配1次或者多次数字,注意这里不要写成*,因为即便是小数,小数点之前也得有一个数字;\.?这个是匹配小数点的,可能有,也可能没有;\d*这个是匹配小数点之后的数字的,所以是0个或者多个;

代码如下:

import re
string="A1.45,b5,6.45,8.82"
print re.findall(r"\d+\.?\d*",string)
# ['1.45', '5', '6.45', '8.82']

匹配指定字符串开头的数字

例如下面的string:

tensorflow:Final best valid     0 loss=0.20478513836860657 norm_loss=0.767241849151384 roc=0.8262403011322021 pr=0.39401692152023315 calibration=0.9863265752792358 rate=0.0
提取 calibration=0.9863265752792358 .
# 匹配“calibration=”后面的数字
pattern = re.compile(r'(?<=calibration=)\d+\.?\d*')
pattern.findall(string)
# ['0.9863265752792358']

匹配包含指定字符串开头的数字

pattern = re.compile(r'(?:loss=)\d+\.?\d*')
pattern.findall(string)
# ['loss=0.20478513836860657', 'loss=0.767241849151384']

匹配时间,17:35:24
string = "WARNING:tensorflow: 20181011 15:28:39 Initialize training"
pattern = re.compile(r'\d{2}:\d{2}:\d{2}')
pattern.findall(string)
# ['15:28:39']

匹配时间,20181011 15:28:39
string = "WARNING:tensorflow: 20181011 15:28:39 Initialize training"
pattern = re.compile(r'\d{4}\d{2}\d{2}\s\d{2}:\d{2}:\d{2}')
pattern.findall(string)
# ['20181011 15:28:39']

总结

以上所述是小编给大家介绍的python正则表达式从字符串中提取数字的思路详解 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Python正则表达式如何进行字符串替换实例

    Python正则表达式在使用中会经常应用到字符串替换的代码.有很多人都不知道如何解决这个问题,下面的代码就告诉你其实这个问题无比的简单,希望你有所收获. 1.替换所有匹配的子串用newstring替换subject中所有与正则表达式regex匹配的子串 result, number = re.subn(regex, newstring, subject) 2.替换所有匹配的子串(使 用正则表达式对象) rereobj = re.compile(regex) result, number = re

  • python正则表达式判断字符串是否是全部小写示例

    复制代码 代码如下: # -*- coding: cp936 -*-import re  s1 = 'adkkdk's2 = 'abc123efg' an = re.search('^[a-z]+$', s1)if an:    print 's1:', an.group(), '全为小写' else:    print s1, "不全是小写!" an = re.match('[a-z]+$', s2)if an:    print 's2:', an.group(), '全为小写'

  • python字符串中匹配数字的正则表达式

    Python 正则表达式简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本章节给大家介

  • 详解Python3中字符串中的数字提取方法

    逛到一个有意思的博客在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub 方法 totalCount = '100abc' totalCount = re.sub("\D", "", totalCount) 但是没有说明什么含义,于是去查了其他的资料,做一下记录: 在Python3.5.2 官方文档re模块中sub函数的定义是: re

  • python使用正则表达式匹配字符串开头并打印示例

    本文实例讲述了python使用正则表达式匹配字符串开头并打印的方法.分享给大家供大家参考,具体如下: import re s="name=z1hangshan username=fff url=www.baidu.com password=ddd256" s2="username=fff name=z1hangshan url=www.baidu.com password=ddd256" #p=re.compile(r'((?:\s)name=(\S)+)') p=

  • python利用正则表达式提取字符串

    前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串.日志分析会遇到这种情况,下面我会分别讲一下对应的方法. 一.单个位置的字符串提取 这种情况我们可以使用(.+?)这个正则表达式来提取. 举例,一个字符串"a123b",如果我们想提取ab之间的值123,可以使用findall配合正则表达式,这样会返回一个包含所以符合情况的list. 代码如下: import re str = "

  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

  • Python 正则表达式匹配字符串中的http链接方法

    利用Python正则表达式匹配字符串中的http链接.主要难点是用正则表示出http 链接的模式. import re pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') # 匹配模式 string = 'Its after 12 noon, do you know where your rooftops are? http://tinyur

  • python正则表达式从字符串中提取数字的思路详解

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## \D 匹配任意非数字字符. ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符). ## x* 匹配0次或者多次 x 字符. ## x+ 匹配1次或者多次 x 字符. ## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次. ## (a|b|c) 要么匹配

  • Python正则表达式匹配字符串中的数字

    1.使用"\d+"匹配全数字 代码: import re zen = "Arizona 479, 501, 870. Carlifornia 209, 213, 650." m = re.findall("\d+", zen) print(m) 结果: ['479', '501', '870', '209', '213', '650'] 但是上述这种方式也会引入非纯数据,例子如下: import re zen = "Arizona 47

  • python实现将字符串中的数字提取出来然后求和

    因工作原因,很久没有学习python知识了,感觉都快忘记了,前天看到一个练习题,如何将字符串中的数字提取出来,然后求和呢?下面我来解释一下如何通过python代码来实现. 题目:字符串43...3y2.f67se2.666. 将其中的所有数字提取出来然后求和 思考: 1.字符串中包含了字母和数字和小数点,怎么取出来比较呢? 2.小数点连续有很多个的时候怎么处理? 3.最后取出来的数该怎么求和? 4.最后一个是小数点该怎么办? 解题思路: 1.首先通过循环遍历去将字符串中的数字取出来 2.去判断取

  • java从字符串中提取数字的简单实例

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法,正则表达式,集合类,还有就是String类提供的方法. 1 String类提供的方法: package 测试练习; import Java.util.*; public class get_StringNum { /** *2016.10.25 */ public static void main(Strin

  • python 正则表达式获取字符串中所有的日期和时间

    提取日期前的处理 1.处理文本数据的日期格式统一化 text = "2015年8月31日,衢州元立金属制品有限公司仓储公司(以下简称元立仓储公司)成品仓库发生一起物体打击事故,造成直接经济损失95万元." text1 = "2015/12/28下达行政处罚决定书" text2 = "2015年8月发生一起物体打击事故" # 对文本处理一下 # 2015-8-31 2015-12-28 text = text.replace("年&quo

  • js实现在字符串中提取数字

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

  • python 计算一个字符串中所有数字的和实例

    如下所示: # 计算一个字符串中所有数字的和 def numsum(s): sum = 0 #定义变量,准备记录数字的和 for i in range(len(s)): #遍历字符串 if s[i] >= '0' and s[i] <= '9': #如果i处的字符属于数字字符 sum = sum + int(s[i]) #将字符转成int,求和 return sum s = input("请输入一个字符串:") print(numsum(s)) 以上这篇python 计算一

  • Python 结构化字符串中提取数据详情

    目录 前言 从结构化字符串中提取数据 字符串解析 前言 在许多自动化任务中,我们都需要从已知格式结构化的输入文本中提取相关信息.例如,我们可能需要在一段电影评论数据中提取观影时间.电影名.评分等信息,以便存储后进行进一步分析.在本节中,我们将以提取电影评论数据信息为例讲解如何从结构化字符串中提取数据. 从结构化字符串中提取数据 假设我们具有以下结构的电影评分数据,我们需要解析存储观影时间.电影名.评分等信息: [<Timestamp>] - MOVIE ID: <movie id>

  • Python中读取文件名中的数字的实例详解

    我们在使用计算机时,我们创建一个个文件夹,可以节省桌面空间,做好整理归纳.python中,每个文件中有着不同的内容,我们要想使用文件,就要读取文件.本文向大家介绍Python读取文件名中的数字的方法:1.使用正则表达式:2.获取匹配的字符串:3.需要整数,可以使用int:4.生成数字. 第一步:可以使用正则表达式 regex = re.compile(r'\d+') 第二步:然后获取匹配的字符串 regex.findall(filename) 这将返回包含数字的字符串列表. 第三步:如果您实际需

随机推荐