ipaddress

2020-06-08  本文已影响0人  11爱生活

【背景】

使用到这个模块是腾讯二面时面试官出了一道题:"判断一个字符串是不是IP地址",当时没写上来,是说了解题思路,面试结束自己写出来后,并进行了拓展,如果是IPV4还比较好处理,因为"."隔开的是0-255之间的数,但IPV6使用":"隔开的是4个16进制的数,后面网上查到有ipaddress这个模块,可以判断是否为IP地址且返回版本号

【常用方法】

1、判断是否是IP地址:

>>>ipaddress.ip_address('192.0.2.1')
IPv4Address('192.0.2.1')
>>>ipaddress.ip_address('2001:DB8::1')
IPv6Address('2001:db8::1')

2、读取IP地址版本

>>> ip1 = ipaddress.ip_address('192.0.2.1')
>>> ip1.version
4
>>> ip2 = ipaddress.ip_address('2001:DB8::1')
>>> ip2.version
6

【拓展方式】

https://docs.python.org/zh-cn/3/howto/ipaddress.html

【注意点】

#这种写法在python2.x中会报错
str = '192.0.0.1'
#不进行转换python2.x中会报错,python3.x正常
#str = str.decode('utf-8') 
ipaddress.ip_address(str)
(ipaddress.AddressValueError: '192.168.0.0' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object?)

提示类型错误,需要将括号内的字符串转化为unicode类型

解释请参考:https://www.cnblogs.com/yangmingxianshen/p/7990102.html

上一篇 下一篇

猜你喜欢

热点阅读