Удалить все после 4-го периода в строке - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь манипулировать выводом tcpdump в python 2.7. Я пытаюсь удалить часть порта адреса IP .

Например, если строка input равна

192.168.0.50.XXXX

Как мне поступить , удалив все после 4-го периода, чтобы выход был бы

192.168.0.50

Я думал о том, чтобы что-то сделать с length строки, единственное, что длина порта может быть где-то от 1-5 цифр в моем примере (0-9999).

Единственное, о чем я могу думать, это что-то делать с # точками, так как обычный IP содержит только 3 , а IP с Port подключен, имеет 4 .

Ответы [ 4 ]

0 голосов
/ 28 апреля 2018

Я использовал split и join , чтобы сделать это.

Вот пошаговый процесс:

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'
0 голосов
/ 28 апреля 2018

Разделить строку на группы, используя точку в качестве разделителя. Возьмите первые четыре группы и соедините их снова, используя тот же период, что и разделитель:

ip = "192.168.0.50.XXXX"
".".join(ip.split(".")[:4])
#'192.168.0.50'
0 голосов
/ 28 апреля 2018

Используйте rsplit() для самого чистого или самого простого маршрута:

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

выход

192.168.0.50

rsplit()

Возвращает список строк после разрыва заданной строки справа рядом с указанным разделителем.

0 голосов
/ 28 апреля 2018

Попробуйте это

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.
...