内容正文:
项目7 正则表达式的应用
/// ///
在一份统计表中,我们获取了一部分资料,因为统计时没有统一格式,导致每条信息的录入格式都不相同,其中还包含一些错误信息,请整理该资料,提取资料中的有用信息。
谷晴奇 15200487690 28
楚莲 17842265553 21
熊杰琰, 1215958458196 32
郭树 18760005761 24
长孙竹 3318601245621 56
任务13 整理信息表——正则表达式
任务描述
/// ///
闵咏 13433742199 12
保雁武 2117853135326 21岁
覃环宏, 13923022576 45岁
刁纯榕 13767161437
耿珠 18568527267
任务分析
在之前的学习中了解到,通过使用方括号或内置函数对字符串进行切片输出,可以从字符串中获取满足条件的字符,但当遇到容量较大、格式不规则的字符串时,使用方括号或内置函数实现指定字符的输出将费时费力,不仅会增加代码行数、降低效率,而且会降低代码的可移植性和兼容性。为了解决这一问题,我们可以使用正则表达式完成任务:定义正确的正则表达式,对目标字符串进行匹配,最后对结果进行输出。
/// ///
知识准备
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义的一些特定字符,以及这些特定字符的组合组成一个“规则的字符串”,用这个“规则的字符串”来表达对字符串的一种过滤逻辑。正则表达式是一个特殊的字符序列,它能够帮助用户方便地检查一个字符串是否与某种模式匹配。
正则表达式并不只是Python语言独有,很多计算机程序语言都支持使用正则表达式对字符串进行操作。由于正则表达式的普适性,网络上有许多正则表达式在线测试网站,可以帮助程序员脱离语言、语法及编译运行等复杂过程,直接观察正则表达式的运行结果是否正确,从而可以提高程序的编写及调试效率。本任务选择在正则表达式在线测试网站上执行测试操作。正则表达式在线测试网站如图2-1所示。
/// ///
图2-1 正则表达式在线测试网站
正则表达式一般由普通字符和特殊字符(又称元字符)构成,通过正则表达式可以对字符串进行过滤以取得想要的值。普通字符,即指常见的0~9、a~z、A~Z等字符。本任务重点讲解正则表达式中的元字符。
/// ///
在本任务中使用正则表达式调整格式时,首先对统计表中的姓名进行匹配,此时需要开启多行模式,并设置在字符开头匹配最少两个字符、最多三个字符:
任务实施
^.{2,3}
谷晴奇
楚莲
熊杰琰
郭树
长孙竹
闵咏
保雁武
覃环宏
刁纯榕
耿珠
得到结果:
/// ///
对统计表中的电话号码进行匹配,由于统计表中有错误的电话号码,所以需要根据电话号码的规则,使用正则表达式进行匹配。
1[3-9]\d{9}#表示第一位为1,第二位为3~9中的一个数字,然后再向后匹配9位数字,组成11位手机号码
15200487690
17842265553
15958458196
18760005761
18601245621
13433742199
17853135326
13923022576
13767161437
18568527267
得到结果:
/// ///
从行尾开始匹配两位数字,以获取年龄:
\d{2}岁{0,1}$#从行尾开始匹配两位数字,岁字可以出现0次或1次
28
24
56
12
21岁
45岁
得到结果:
任务完成。
/// ///
在本任务中学习了正则表达式元字符和修饰符的使用方法,通过使用正则表达式以匹配统计表中的有效信息并进行输出。
任务总结
任务检测
(1)简述正则表达式中各类元字符的作用。
(2)如果想要在字符串中匹配所有的数字,则应该使用哪种正则表达式?
任务拓展
如果要在Python中使用正则表达式提取相关数据,则应该怎样做?
/// ///
在任务13中使用正则表达式将有用的信息提取了出来,在本任务中,将使用Python中的re模块对统计资料加载正则表达式,以调整统计资料格式并输出。
任务14 正则表达式的代码实现——正则模块的使用
任务描述
任务分析
在掌握了正则表达式的使用方法后,我们需要将正则表达式运用到Python中,使用Python中的re模块加载正则表达式,将有效信息过滤后输出。