1、使用正则表达式
首先分析IP地址的组成,十进制的合法IP地址由32位数字组成
- 使用.分割开
- 每个分组可出现的情况:
第一个分组:
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