首页 > 编程知识 正文

python正则表达式判断电话号码是否正确,python正则表达式匹配字符串中的电话号码

时间:2023-05-03 14:19:35 阅读:208436 作者:3454

前段时间公司培训一个小题目(很简单),大概要求是读取TXT,按要求的格式,筛选出正确的电话号码,如data.txt中保存了如下的几行

987-123-4567
123 456 7890
(123) 456-7890

现在电话号码格式为:(xxx) xxx-xxxx或xxx-xxx-xxxx,读取TXT输出正确的号码

下面给出两种解法:

#coding=utf-8 import redef setPhoneNumber(): phoneDate=[] listRightFirst=[1,2,3,6,7,8,10,11,12,13] listRightSecond=[0,1,2,4,5,6,8,9,10,11] list_sp = [" ","-","(",")"] i=True j=True phoneLines = open(r"D:eclipse_pythoneclipse_workplace2333srcdata.txt","r") for phoneLine in phoneLines: phoneLine = phoneLine.strip('n') if phoneLine[0] == "(" and phoneLine[4]==")" and phoneLine[5]==" " and phoneLine[9]=="-": for x in listRightFirst: if phoneLine[x] in list_sp : i=False break if i == True: phoneDate.append(phoneLine) if phoneLine[3]=="-" and phoneLine[7]=="-": for y in listRightSecond: if phoneLine[y] in list_sp: j=False break if j==True: phoneDate.append(phoneLine) i=True j=True print phoneDateif __name__=="__main__": setPhoneNumber()

题目很简单,代码也很简单,就不解释了。

后面想到已知了格式,为什么不直接正则匹配呢,于是有了如下的代码:

#coding=utf-8 import redef setPhoneNumber(): phoneLines = open(r"D:eclipse_pythoneclipse_workplace2333srcdata.txt","r") for phoneLine in phoneLines: phoneLine = phoneLine.strip('n') if re.findall("(d{3})-(d{3})-(d{4})", phoneLine): print phoneLine if re.findall("((d{3}))s(d{3})-(d{4})", phoneLine): print phoneLineif __name__=="__main__": setPhoneNumber()

简单的练习,当做熟悉正则了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。