404|0

89

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

《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的编码习惯

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表