【问题标题】:Deleting the last octets of an IP address删除 IP 地址的最后八位字节
【发布时间】:2016-03-07 13:36:50
【问题描述】:

这是我的代码:

ip = ("192.143.234.543/23 
       192.143.234.5/23 
       192.143.234.23/23")

separateOct = (".")
ipNo4Oct = line.split(separateOct, 1) [0] 
print (ipNo4Oct)

IP 来自一个文本文件,我已经正确地完成了我的 for 循环。

我得到的结果是:

192
192
192

但我想要这个结果:

192.143.234
192.143.234
192.143.234

如何获得我想要的结果?

【问题讨论】:

  • 什么是line? (我知道,但我想表明你的代码不完整......)

标签: regex python-3.x split ip


【解决方案1】:

ip = ("192.143.234.543/23",
       "192.143.234.5/23",
       "192.143.234.23/23")

for line in ip:
    separator = "."
    ipNo4Oct = separator.join(line.split(separator, 3)[:-1])
    print (ipNo4Oct)

您使用分隔符重新连接您的 3 个部分。

【讨论】:

  • 谢谢! @glglgl 它工作得很好!抱歉没有发布整个脚本,我是这个论坛的新手! :)
【解决方案2】:

您可以使用几乎相同的代码,但有一些切片和join

>>> ipNo4Oct = ip.split(separateOct) [0:3]
>>> '.'.join(ipNo4Oct)
'192.143.234'

或者对于整个字符串(考虑到可以按照您的代码建议将其拆分为行):

>>> for line in ip:
        ipNo4Oct = line.split(separateOct) [0:3]
        '.'.join(ipNo4Oct)

'192.143.234'
'192.143.234'
'192.143.234'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2018-09-19
    • 2013-01-18
    • 2021-08-26
    相关资源
    最近更新 更多