首页 > 编程语言 >python 提取字符中的数字

python 提取字符中的数字

时间:2023-04-09 18:44:59浏览次数:58  
标签:字符 提取 string python pattern list filter time print

 

 

一、isdigit()函数

isdigit()函数是检测输入字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。

1 2 3 4 5 6 7 8 9 10 11 dream = "123456" print(dream.isdigit()) # 返回:True   dream = "123abc456" print(dream.isdigit()) # 返回:False   dream = 'abcd' print(dream.isdigit()) # 返回:False

二、filter() 函数

说明:filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象;

如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法:

1 filter(function, iterable)

1、过滤出列表中的所有奇数:

1 2 3 4 5 6 def is_odd(n):     return n % 2 == 1    tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) newlist = list(tmplist) print(newlist)

2、过滤出列表中的所有偶数:

1 2 l = [x for x in range(10)] print(list(filter(lambda x : x%2 == 0, l)))

3、过滤出1~100中平方根是整数的数:

1 2 3 4 5 6 7 import math def is_sqr(x):     return math.sqrt(x) % 1 == 0    tmplist = filter(is_sqr, range(1, 101)) newlist = list(tmplist) print(newlist)

4、删除1-100中素数

1 2 3 4 5 6 7 8 9 10 11 L = range(1, 101)   def isprimer(n):     flag = 1     for i in range(2, n):         if n % i == 0:             flag = 0     if flag == 0:         return n   print(list(filter(isprimer, L)))

5、去除空格和空值

1 2 3 4 def not_empty(s):   return s and s.strip()   filter(not_empty, ['A', '', 'B', None, 'C', ' '])

6、高阶运用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 def _odd_iter():     n = 1     while True:         n = n + 2         yield n           def _not_divisible(n):     return lambda x : x%n>0    def primes():     yield 2     it = _odd_iter()     ftr = filter(_not_divisible(2), it) #1     while True:         n = next(ftr )        #2         yield n                        ftr = filter(_not_divisible(n), ftr ) #3           for n in primes():     if n < 100:         print('now:',n)     else:         break

三、提取一段字符串中的数字

列表转字符串

1 2 3 number = ['12', '333', '4'] number_ = "".join(number)    # 列表转字符串 print(number_)    # 123334
1 2 3 4 5 6 7 a = "".join(list(filter(str.isdigit, '123ab45'))) print(a) # 返回12345   b = list(filter(str.isdigit, '123ab45')) print(b) # 返回['1', '2', '3', '4', '5']
1 2 3 4 5 6 7 8 time_ = "2019年09月04日 11:00" time_filter = filter(str.isdigit, time_)   print(time_filter)           # <filter object at 0x0000019358731BE0> print(type(time_filter))     # <class 'filter'> time_list = list(time_filter)       # ['2', '0', '1', '9', '0', '9', '0', '4', '1', '1', '0', '0'] time_str = "".join(time_list)       # 转为str    201909041100 time_int = int(time_str)            # 转为int    201909041100

利用正则表达式

1 2 3 4 5 6 import re str_ = "12今天333天气4不错" number = re.findall("\d+",str_)    # 输出结果为列表 print(number)    # 输出结果:['12', '333', '4']

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

例如下面的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 .

1 2 3 4 5 # 匹配“calibration=”后面的数字 pattern = re.compile(r'(?<=calibration=)\d+\.?\d*') pattern.findall(string)   # ['0.9863265752792358']

五、匹配时间,17:35:24

1 2 3 4 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']

 

提取两个下划线中的数字 比如 _500_

string = "WARNING:tensorflow: _500_ Initialize training" pattern = re.compile(r'_(\d+)_') pattern.findall(string) # 500

 

六、匹配时间,20181011 15:28:39

1 2 3 4 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']

 

标签:字符,提取,string,python,pattern,list,filter,time,print
From: https://www.cnblogs.com/oceaning/p/17300773.html

相关文章

  • [oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
    各种符号回忆上次内容中文字符可以有各种分类方法声母拼音检字法韵母合辙押韵的分类偏旁部首实际上unicode的排序方法我们以前勇闯地下城时候获得了一把屠龙宝刀给他镶上了❤️宝石这宝石应该如何理解?今天我们就来彻底解密红色爱心的原理闭环首先是文字我们的汉字可以构成一个闭......
  • [oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
    各种符号回忆上次内容中文字符可以有各种分类方法声母拼音检字法 韵母合辙押韵的分类 偏旁部首实际上unicode的排序方法  ​ 添加图片注释,不超过140字(可选) 我们以前勇闯地下城时候获得了一把屠龙宝......
  • 性能最快的代码分析工具,Ruff 正在席卷 Python 圈!
    几天前,Python开源社区又出了一个不小的新闻:HTTPX和Starlette在同一天将在用的代码分析工具(flake8、autoflake和isort)统一替换成了Ruff。HTTPX是一个支持异步的HTTP客户端,Starlette是一个轻量级的ASGI框架,它们都是Python社区里的明星项目,目前加起来有近20Kstar......
  • Python+Selenium.webdriver实现WEB端UI自动化测试
    本篇记录基于Python+Selenium.webdriver实现WEB端UI自动化测试,其中测试用例使用excel维护。 1.项目选取(登录页无验证码校验的项目)该示例选取的是登录页不需要输入验证码校验的基础页面(考虑到现在大部分项目都是需要进行验证码校验的,后面研究后再出一篇相关的分享。) 2.环境......
  • python基础十(常用模块)
    一time与datetime模块1、timeimporttime#时间分为三种格式:#1、时间戳:从1970年到现在经过的秒数#作用:用于时间间隔的计算print(time.time())#1680886728.1569963#2、按照某种格式显示的时间:2022-07-0617:12:11#作用:用于展示时间print(time.strftime('%Y-%......
  • python Selenium自动化测试
    转载自https://blog.csdn.net/tangya3158613488/article/details/106902110 Selenium自动化测试什么是自动化测试自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。总的概括即:将人为驱动的测试行为转化为机器执行的......
  • 提取字符
    问题:提取汉字“线”和符号“_”之间的数字,及汉字“线”之前的字母(如果有) 函数公式解决:=MID(A1,FIND("线",A1)+1,FIND("_",A1)-FIND("线",A1)-1)&MIDB(A1,SEARCHB("?线",A1&"1线"),1)FIND("线",A1)找“线”在A1中的位置;FIND("_",A1)找“_”......
  • 多表查询和python操作mysql
    目录多表查询的两种方法方法1:连表操作方法2:子查询小知识点补充说明可视化软件NaviCat多表查询练习题1、查询所有的课程的名称以及对应的任课老师姓名2.查询平均成绩大于八十分的同学的姓名和平均成绩3.查询没有报李平老师课的学生姓名4.查询没有同时选修物理课程和体育课程的学生......
  • Python DeprecationWarning: executable_path has been deprecated, please pass in a
    借鉴https://blog.csdn.net/lly1122334/article/details/106217320https://blog.csdn.net/qq_57377057/article/details/128463296https://blog.csdn.net/tangya3158613488/article/details/106902110 将之前谷歌浏览器的105版本替换为110版本解决Python:DeprecationWar......
  • Python正则表达式
    本章将介绍Python中正则表达式,本文将会基于Python的标准库re模块讲解正则表达式。1、正则表达式的基本使用1.1、re.search(正则表达式,待匹配文本)我们可以使用re.search查询待匹配文本中是否存在可以匹配上的字符串,直接上例子。importrematch=re.search(r'pytho......