【编程开发】python学习-判断是否是IP地址

1、使用正则表达式

首先分析IP地址的组成,十进制的合法IP地址由32位数字组成

  1. 使用.分割开
  2. 每个分组可出现的情况:
    第一个分组:
    1-9:一位数字
    10-99:两位数字
    100-199:三位数字且以1开头
    200-249
    250-255
    其余分组:
    0-9
    10-99
    100-199
    200-249
    250-255
#coding=utf8
import IPy,re
f1=open(r'D:\sectool\venv\iplist.txt',mode='r')
def is_ip(ipAddr):
    check_ip=re.compile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
    if check_ip.match(ipAddr):
        return True
    else:
        return False
if __name__ == '__main__':
    for i in f1.readlines():
        if is_ip(i):
            print i.strip() + ' is vaild ip address'
        else:
            continue



也可以使用在线工具调试

刚遇到的时候曾想过用2[0-5][0-5]匹配200-255,发现第三位大于5的没法匹配,还是要分开写:
2[0-4]\d
25[0-5]

2、导入第三方库判断

#coding=utf8
import IPy
f1=open(r'D:\sectool\venv\iplist.txt',mode='r')
def  is_ip(address):
    try:
        IPy.IP(address)
        return True
    except Exception as  e:
        return False
if __name__ == '__main__':
    for i in f1.readlines():
        if is_ip(i):
            print i.strip()+' is vaild ip address'
        else:
            continue


posted @ 2018-12-23 00:36  thecat'sblog  阅读(1617)  评论(0编辑  收藏  举报