《Python编程快速上手——让繁琐工作自动化》2、借助正则表达式进行判别
[复制链接]
本帖最后由 皓月光兮非自明 于 2024-5-13 10:26 编辑
2、借助正则表达式进行判别
使用正则表达式判别输入的结构是否符合“***-***-****”的号码格式:
使用for循环分别摘录数字段“*”,
其中,range()函数限定“i”的取值范围、
isdecimal()函数的作用是该参数检验是否是十进制数字。
def isPhoneNumber(text):
if len(text)!=12: #校验长度
return False
for i in range(0,3):
if not text[i].isdecimal(): #检验是否是十进制数字
return False
if text[3]!='-':
return False
for i in range(4,7):
if not text[i].isdecimal():
return False
if text[7]!='-':
return False
for i in range(8,12):
if not text[i].isdecimal():
return False
return True
print('121-122-4567 is a phone number:')
print(isPhoneNumber('121-122-4567'))
print('Moshi moshi is a phone number:')
print(isPhoneNumber('Moshi moshi'))
验证通过后根据照我国手机号码格式编写一段简易的判别脚本:
我国手机号码格式第一位以数字“1”开头的11位数字,第二段58行开始摘取符合手机号码条件的脚本,该脚本还可以进一步优化,例如在遍历与展开过程中如若第i位非数字则跳过连续11位的判断。
def isPhoneNumber_Chinese(text):
if len(text)!=11: #校验长度
return False
for i in range(len(text)):
if not text[i].isdecimal(): #检验是否是十进制数字
return False
if text[0]!='1': #检验第一位是否是1开头
return False
return True
print('Chinese Phone Number done:' + isPhoneNumber_Chinese('121-122-4567').__str__())
print('Chinese Phone Number done:' + isPhoneNumber_Chinese('17712341234').__str__())
message ='Call me at 123-133-1211 tomorrow. 17712341234 is my office.'
for i in range(len(message)):
chunk = message[i:i+11]
if isPhoneNumber_Chinese(chunk):
print('Chinese Phone number found:'+ chunk)
小结:Python的编码格式与C语言相似又与编码习惯不一致,例如Python中在if、for、while等判断体后往往不需要添加“()”,编写过程中往往以C语言中的习惯带入,还需要常常磨合熟悉Python的编码习惯
|