Python 如何从ip地址中剥离最后一位

Python 如何从ip地址中剥离最后一位,python,ip-address,Python,Ip Address,在Python中,如何将IP地址的最后n位归零?我更喜欢使用标准库的解决方案 一些strip\u addr测试用例看起来像: assert strip_addr(u'1.2.3.4', 24) == u'1.2.3.0' assert strip_addr(u'2001:1234:f678::9', 33) == u'2001:1234:8000::' 使用如何 非常感谢,接口网络对象是这里的解决方案。我冒昧地简化了你的回答。如果您不同意,请随时回复。使用网络地址属性捕捉得很好,消除了字符串拆

在Python中,如何将IP地址的最后n位归零?我更喜欢使用标准库的解决方案

一些
strip\u addr
测试用例看起来像:

assert strip_addr(u'1.2.3.4', 24) == u'1.2.3.0'
assert strip_addr(u'2001:1234:f678::9', 33) == u'2001:1234:8000::'
使用如何


非常感谢,接口网络对象是这里的解决方案。我冒昧地简化了你的回答。如果您不同意,请随时回复。使用
网络地址
属性捕捉得很好,消除了字符串拆分的麻烦!(我想,对于这个小例子来说,在自己的函数中使用
assert
语句与测试兼容有点过分。)
import ipaddress

def strip_addr(ip, bits):
    nwif = ipaddress.ip_interface(u'%s/%s' % (ip, bits))
    return str(nwif.network.network_address)

assert strip_addr(u'1.2.3.4', 24) == u'1.2.3.0'
assert strip_addr(u'2001:1234:f678::9', 33) == u'2001:1234:8000::'