再谈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月前
|
Java
Java多态:如何实现“一箭双雕”的编程艺术?
【6月更文挑战第17天】Java中的多态是编程灵活性的关键,它允许通用接口处理不同类型的对象。通过抽象基类或接口,子类可以实现各自的行为。例如,在动物音乐会场景中,一个`Animal`接口让狮子、猴子和企鹅都能唱歌,调用`sing()`即自动匹配相应行为。同样,在图形绘制示例中,`Shape`基类让绘制圆形、正方形和三角形变得简单,只需调用`draw()`。多态减少了代码冗余,增强了可扩展性和可维护性,是解决需求变化的利器。
37 0
|
5月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
47 0
|
5月前
|
编译器 C++
C++进阶之路:何为默认构造函数与析构函数(类与对象_中篇)
C++进阶之路:何为默认构造函数与析构函数(类与对象_中篇)
34 0
|
编译器 C++
【C++杂货铺】再谈类和对象(二)
【C++杂货铺】再谈类和对象(二)
48 0
【C++杂货铺】再谈类和对象(二)
|
存储 编译器 C++
C++类和对象概念及实现详解(下篇)
C++类和对象概念及实现详解(下篇)
39 0
|
编译器 C++
【C++杂货铺】再谈类和对象(一)
【C++杂货铺】再谈类和对象(一)
69 0
|
编译器 C++
【C++精华铺】6.C++类和对象(下)类与对象补充及编译器优化
构造函数的初始化列表及其行为、static成员(函数,变量)、友元(函数,类)、内部类、匿名对象、对象拷贝时的编译器优化
|
存储 Java 编译器
再谈类与对象
前面两篇我们讲述了c++类和对象的相关知识,本篇将再讲述一些小的知识点
47 0
|
Java
java多态进阶,吃透多态,这一篇就够了
1.动态绑定机制 java的动态绑定机制非常重要🎈 实例A 我们来看一个实例:
98 1
java多态进阶,吃透多态,这一篇就够了
|
编译器 C++
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(3)
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(3)
81 0
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(3)