【问题标题】:How to strip last bits from ip address如何从ip地址中删除最后一位
【发布时间】:2013-01-18 16:58:38
【问题描述】:

如何在 Python 中将 IP 地址的最后 n 个数字归零?我更喜欢使用标准库的解决方案,很可能是ipaddress

一些strip_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-address


    【解决方案1】:

    interface network objects怎么样?

    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::'
    

    【讨论】:

    • 非常感谢,接口网络对象是这里的解决方案。我冒昧地简化了您的答案。如果您不同意,请随时回复。
    • network_address 属性很好,消除了字符串拆分的麻烦! (而且,我想在自己的函数中包含 assert 语句以与 nose 测试兼容对于这个小例子来说有点多。=)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多