从字符串中删除第四个句点后面的所有内容。

4
我是一个有用的助手,可以为你翻译文本。以下是您需要翻译的内容:

我正在尝试使用Python 2.7操作来自tcpdump的输出。我想要做的是删除IP地址中的端口部分

例如,如果输入字符串如下:

192.168.0.50.XXXX

如何删除第四个句点之后的所有内容,以使输出为:

192.168.0.50

我思考了一下如何处理字符串的长度,但是在我的示例中端口长度可以从1到5位数字(0-9999)。
我唯一能想到的就是根据句点数量来处理,一个正常的IP地址只包含3个句点,而附带端口的IP地址有4个。
4个回答

4

使用rsplit()是最简单和最干净的方法:

s = "192.168.0.50.XXXX"
s = s.rsplit('.',1)[0]

输出:

192.168.0.50

rsplit()

通过指定的分隔符从右侧开始将给定字符串分割,返回一个字符串列表。


1
这个解决方案对我很有效,而且似乎是最简洁的解决方案。谢谢! - Zac

2

试试这个

print('.'.join("192.168.0.50.XXXX".split('.')[:-1])) #or [:4], depending on what you want. To just remove the port, the -1 should work.

2

使用句点作为分隔符,将字符串拆分成组。取前四组并再次用相同的句点作为分隔符将它们组合在一起:

ip = "192.168.0.50.XXXX"
".".join(ip.split(".")[:4])
#'192.168.0.50'

1
我使用了splitjoin函数来完成这个任务。
以下是具体步骤:
ip="192.168.0.50.XXXX"

使用定义的分隔符将字符串拆分并将数据添加到字符串数组中。
sp=ip.split(".")
#['192', '168', '0', '50', 'XXXX']

选择数组中除了最后一个项目之外的所有内容

sp=sp[:-1]
#['192', '168', '0', '50']

然后使用join函数将这些元素连接起来:
".".join(sp)
#'192.168.0.50'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接