方法一:按照字符串拆解
def ip4_check(ip):
ip_4 = ip.strip().split(".") # 去掉前后空格,按.切割IP地址为一个列表
if len(ip_4) != 4: # 判断IP是否为4位数
print("IP4地址应该由4个字节组成,以'.'分割!")
exit()
for i in range(4):
# 判断IP是否为0-255的整数
if ip_4[i].isdigit() and ip_4[i] == str(int(ip_4[i])) and 0 <= int(ip_4[i]) <= 255:
pass
else:
print('IP4地址必须由0-255的整数组成')
exit()
else:
print('{}是合法的IP4地址'.format(ip))
方法二:使用IPy包
def is_ip(ip):
import IPy
try:
IPy.IP(ip)
return True
except Exception as e:
return False
但是,如上图,IPy包不足4位也会判断为True,所以最好还是先校验下位数
def is_ip4(ip):
ip_4 = ip.strip().split(".") # 去掉前后空格,按.切割IP地址为一个列表
if len(ip_4) == 4: # 判断IP是否为4位数
import IPy
try:
IPy.IP(ip)
return True
except Exception as e:
return False
return False
方法三: 使用python自带方法
def _check_ip4(ip):
import socket
try:
socket.inet_aton(ip)
return True
except socket.error:
return False
但是,也有跟IPy一样的问题
方法四:使用正则表达式
def check_ip4(ip):
import re
compile_ip = re.compile("^((?:(2[0-4]\d)|(25[0-5])|([01]?\d\d?))\.){3}(?:(2[0-4]\d)|(255[0-5])|([01]?\d\d?))$")
if compile_ip.match(ip):
return True
else:
return False