Python正则表达式
我们要做什么
使用Python正则表达式在文本文件中搜索电话号码,并在找到后写入新文件。
先介绍下正则表达式的用法:
1.先部署re模块:导入re
创建Regex对象(正则表达式对象)
my _ reg=re.com pile (r 'ddd- ddddddd ' )
传递给compile函数的参数是匹配的模式。 这里的d意味着与数字一致。
正则表达式包含反斜杠,因此使用原始字符串。 否则,就需要摆脱反斜杠。
因此,与正则表达式匹配的字符串是三个数字、水平条和八个数字。
另一种简洁的写法是my_reg=re.compile(r(d )3)-(d )。
大括号和大括号中的数字表示与前面的模式匹配多少次。
使用Regex对象的搜索方法搜索字符串
match=my _ reg.search (XXX 025-12345678 ooo 010-87654321 CCC ) )。
如果匹配字符串,则搜索方法返回match对象;如果不匹配,则返回None
调用match对象的group方法可以得到匹配的字符串
match.group (
' 025-12345678 '
但是,这种方法只返回第一个匹配的结果
如果结果不匹配:
match=my _ reg.search (XXX 025-123 xx 678 ooo 010-876 xx 4x1CCC ) )
是打印(匹配)
诺诺
match is None
真
是ool (匹配)
假的
使用findall方法返回所有结果,并返回字符串列表
(如果没有匹配的结果,则为空列表。)
result list=my _ reg.find all (XXX 025-12345678 ooo 010-87654321 CCC )
结果列表
['025-12345678 ',' 010-87654321']
如果没有匹配的结果:
result list=my _ reg.find all (XXX 025-1234 xx 78 ooo 010-87xx 321 CCC )
结果列表
[]
下面来完成我们的例子:
查找需要搜索的文件。 (本文为了演示,从互联网上随意复制了网页,并手动在其中插入了电话号码。 )在此示例中,需要搜索的文件是text.txt。 请确保Python文件也保存在与该文件相同的目录中。Python脚本如下:
导入re
result=open('result.txt ',' w ' ) )
phone _ reg=re.com pile (r (d {3}-(d {8} ) )
withopen(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
欢迎大家转发!