最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Python正则表达式应用(一)

Python 少儿编程 2126浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

Python正则表达式应用(一)


我们要做什么

使用Python正则表达式在一个文本文件中查找电话号码,找到之后写入到一个新的文件中。

先介绍下正则表达式的用法:

1.先导入re模块:

>>> import re

2.创建一个Regex对象(正则表达式对象)

  >>> my_reg=re.compile(r’ddd-dddddddd’)

compile函数中传入的参数就是要匹配的模式(这里的d表示匹配一个数字)。

因为正则表达式中含有反斜杠,所以使用原始字符串(不然就需要转义反斜杠了)。

所以这个正则表达式匹配的字符串就是:三个数字加上一个横杠再加上8个数字。

另外一种简洁的写法是:>>> my_reg=re.compile(r’d{3}-d{8}’)

花括号及花括号里的数字,表示匹配前面模式多少次。

3.使用Regex对象的search方法,搜索字符串

>>> match=my_reg.search(‘xxx025-12345678ooo010-87654321ccc’)

如果匹配到字符串则search方法返回一个match对象,否则返回None

4.调用match对象的group方法,便可以得到匹配的字符串了

>>> match.group()

’025-12345678′

但是这种方法只能返回第一次匹配的结果

没有匹配到结果的情况:

>>> match=my_reg.search(‘xxx025-123xx678ooo010-876xx4x1ccc’)

>>> print(match)

None

>>> match is None

True

>>> bool(match)

False

5.使用findall方法返回所有结果,其返回一个字符串列表

(如果没有匹配结果则是一个空列表)

>>> resultList=my_reg.findall(‘xxx025-12345678ooo010-87654321ccc’)

>>> resultList

['025-12345678', '010-87654321']

没有匹配结果的情况:

>>> resultList=my_reg.findall(‘xxx025-1234xx78ooo010-87xx321ccc’)

>>> resultList

[]

下面来完成我们的例子:

找一个需要搜索的文件(本文为了演示,随便从网上复制了一个网页,手动向其中插入了一些电话号码),本例子中需要搜索的文件是text.txt,请确保你的Python文件也保存在该文件所在的目录。

Python脚本如下:

import re

result=open(‘result.txt’,’w’)

phone_reg=re.compile(r’d{3}-d{8}’)

with open(‘text.txt’) as f:

    for line in f:

        match=phone_reg.findall(line)

        if match:

            for rec in match:

                result.write(rec)

                result.write(‘n’)

result.close()

运行的结果便是在同一个目录下生成了一个result.txt文件,其中的内容便是匹配的所有电话号码:

入我的结果:

025-11111111

123-89876548

010-11123411

456-87646789

789-88888888

888-88888888

025-11561111

025-11116711

888-88888888

010-11678111

055-11345111

011-11543211


欢迎大家转发!

您必须 登录 才能发表评论!