再谈re的应用

简介: 再谈re的应用

上期,我们介绍了Python中re的用法,本期,我们通过解决一个实例来再深入学习一下re的用法,方便后期进行数据筛选、数据清洗等等操作。

一、全面筛选

例:请把下面一段文字中所有的数字提取出来:#昨日客流# 南京地铁3月27日客运量291.9,其中1号线80.1,2号线67.6,3号线62.7,4号线16.7,7号线11.8,10号线17.4,S1号线9,S3号线8.5,S6号线4.8,S7号线1.2,S8号线10.2,S9号线1.9(以上单位:万)

用python中的正则表达式实现一下:


import re
text = "#昨日客流# 南京地铁3月27日客运量291.9,其中1号线80.1,2号线67.6,3号线62.7,4号线16.7,7号线11.8,10号线17.4,S1号线9,S3号线8.5,S6号线4.8,S7号线1.2,S8号线10.2,S9号线1.9(以上单位:万)"
# 使用正则表达式匹配所有数字(包括小数)numbers = re.findall(r'\d+\.?\d*', text)
# 将提取的数字转换为浮点数numbers = [float(num) for num in numbers]
print(numbers)

运行结果为:

39d919f1b86afdbf149f64bf17f7f6a7.png

正则表达式\d+\.?\d*用于匹配整数和小数,其中\d+匹配一个或多个数字,\.?匹配0个或1个小数点,\d*匹配0个或多个数字。二、部分筛选的实现
如果我们只想筛选后面每条线路的数字,如何操作?


import retext = "#昨日客流# 南京地铁3月27日客运量291.9,其中1号线80.1,2号线67.6,3号线62.7,4号线16.7,7号线11.8,10号线17.4,S1号线9,S3号线8.5,S6号线4.8,S7号线1.2,S8号线10.2,S9号线1.9(以上单位:万)"# 使用正则表达式匹配所有数字(包括小数)numbers = re.findall(r'号线(\d+\.?\d*)', text)# 将提取的数字转换为浮点数numbers = [float(num) for num in numbers]print(numbers)

3c7465c270079ffa83728f5e775ac5a1.png


三、多匹配模糊筛选如果上面的部分文字缺失,比如:1号线80.1变为1号80.1,后面的文字不变,该怎么处理?

#昨日客流# 南京地铁3月27日客运量291.9,其中1号80.1,2号线67.6,3号线62.7,4号线16.7,7号线11.8,10号线17.4,S1号线9,S3号线8.5,S6号线4.8,S7号线1.2,S8号线10.2,S9号线1.9(以上单位:万)python的处理如下:


import retext = "#昨日客流# 南京地铁3月27日客运量291.9,其中1号80.1,2号线67.6,3号线62.7,4号线16.7,7号线11.8,10号线17.4,S1号线9,S3号线8.5,S6号线4.8,S7号线1.2,S8号线10.2,S9号线1.9(以上单位:万)"# 使用正则表达式匹配所有数字(包括小数)numbers = re.findall(r'(号线|号)(\d+\.?\d*)',text)print(numbers)# 将提取的数字转换为浮点数number= [num[1] for num in numbers]print(number)

运行结果为:

9414ec7beecb50d1cf072667ab6c6516.png

四、结语

Python中re是一个非常好的筛选工具,用好re可以很方便地实现数据筛选、清洗等,多学多练,不断学习新知识和技能,实践提升自己

相关文章
|
5月前
|
设计模式 程序员
故意把代码写得很烂,这样的 “防御性编程“ 可取吗?
故意把代码写得很烂,这样的 “防御性编程“ 可取吗?
|
存储 编译器 C语言
带你们偷瞄编程绕不开的C语言(三)
带你们偷瞄编程绕不开的C语言(三)
83 0
|
Java 编译器 C#
带你们偷瞄编程绕不开的C语言(一)
带你们偷瞄编程绕不开的C语言(一)
198 0
|
C语言
带你们偷瞄编程绕不开的C语言(二)
带你们偷瞄编程绕不开的C语言(二)
56 0
|
存储 Java 编译器
再谈类与对象
前面两篇我们讲述了c++类和对象的相关知识,本篇将再讲述一些小的知识点
55 0
|
小程序 编译器 C语言
c++重中之重:“换个龟壳继续套娃“:运算符重载等的学习
c++重中之重:“换个龟壳继续套娃“:运算符重载等的学习
129 0
|
自然语言处理 JavaScript
再谈JS闭包
作用域 作用域嵌套 词法作用域(lexicsl scope) 闭包 闭包示例
215 0
|
安全 编译器 网络安全
一些碎碎念以及类和对象零碎知识点补充
一些碎碎念以及类和对象零碎知识点补充
114 0
一些碎碎念以及类和对象零碎知识点补充
|
缓存 Python
一文让你完全弄懂Stegosaurus(上)
一文让你完全弄懂Stegosaurus
200 0
一文让你完全弄懂Stegosaurus(上)
|
算法 NoSQL API
到底该不该看源码(懂这三点儿就够了)
1、不要为了看源码而看源码 2、代码积累到一定程度,遇到问题自然就去查源码了,然后你就看懂了 3、两年内不要刻意去看源码,可以点开简单了解一下就行,前两年疯狂做项目就行了,后期项目做的多了,你自己就会有疑问,每次写代码就会问自己为什么要这样写?底层的原理是什么?很自觉的带着问题就去看源码了,如果你没有这样的疑问,那说明你也不适合去看源码了,写写业务代码,了了一生
202 0