设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第58课】 正则表达式(4)

[复制链接]

1

主题

0

好友

75

积分

注册会员

Rank: 2

61#
发表于 2018-6-22 11:25:04 |只看该作者
[(]?0\d{2,3}[ )-]?\d{8}
\(?0\d{2,3}[) -]?\d{7,8}
\(0\d{2,3}\)\d{8}|0\d{2,3}[ -]?\d{8}
这样写感觉有局限性,当大量人员数据包含(手机号、身份证号、座机号等等),这个不光会匹配座机号,也会将手机号和身份证号的部分内容截取出来,我只需要座机号要怎么处理?
回复

使用道具 举报

1

主题

0

好友

75

积分

注册会员

Rank: 2

62#
发表于 2018-6-22 11:28:43 |只看该作者
loveting0jie 发表于 2018-6-22 11:25
[(]?0\d{2,3}[ )-]?\d{8}
\(?0\d{2,3}[) -]?\d{7,8}
\(0\d{2,3}\)\d{8}|0\d{2,3}[ -]?\d{8}

例如:
import re
f = open('J:\黄杰\学习文件\练习\正则表达式\员工信息登记表.txt')
data = f.read()

a = re.findall(r'\(0\d{2,3}\)\d{8}|0\d{2,3}[ -]?\d{8}',data)
print(a)

f.close()结果:
['098219781020', '010619920410', '092319841019', '011519850315', '010619860329', '082219900115', '050219900104', '005198703026', '011978021509', '092119840108', '081199508113', '062119970505', '(021)88776543', '050219940911', '010-55667890', '098419950322', '011519871217', '0571 66345673', '004199303160', '022219880115', '058319890712', '062519920228', '032419941023', '098119940110', '068219831108', '006198510077']


回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

63#
发表于 2018-6-22 16:07:00 |只看该作者
loveting0jie 发表于 2018-6-22 11:28
例如:
import re
f = open('J:\黄杰\学习文件\练习\正则表达式\员工信息登记表.txt')

这要看你数据里具体是怎样的形式,有分行或空格的话,可以通过 \b 边界符来避免手机号和身份证号
前面课程有提到这个符号
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-28 17:10 , Processed in 0.025167 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部