Попытка заменить последние 2 октета IP-адреса

#python #python-3.x

#python #python-3.x

Вопрос:

У меня следующий IP-адрес «192.168.2.65»

Есть ли способ преобразовать последние 2 октета в 0.

Я нашел следующее, но это позволяет мне заменить только последний, мне нужно заменить последние 2.

 ip = 192.168.2.65
output='.'.join(ip.split('.')[:-1] ["0"])
print(output)
 

что дает мне 192.168.2.0, и я хотел бы быть 192.168.0.0

Комментарии:

1. Это связано с подсетями? Вы пытаетесь найти сетевой адрес для представленной подсети? Какова логика его изменения 0.0 ?

Ответ №1:

Индекс -1 означает последний индекс. Если вы хотите изменить два, измените свой индекс на -2 .

 output='.'.join(ip.split('.')[:-2] ["0", "0"])
 

Ответ №2:

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

 ip = "192.168.2.65"
output = re.sub(r'.d .d 


Комментарии:

1. Или вы можете просто заменить в '.0.0' качестве замены: re.sub(r'.d .d $', '.0.0', ip) . Кроме того, не забудьте import re .

Ответ №3:

Зависит от логики, которую вы пытаетесь применить .. если вы просто хотите изменить строку, другие ответы верны.

Однако, если вы хотите получить сетевой адрес для подсети, в которой находится адрес, вы должны правильно обрабатывать адреса и использовать ipaddress модуль.

Это поможет в вычислении правильных сетевых и широковещательных адресов, а также позволит вам проверять включения в сетях и т. Д.


 import ipaddress

interface = IPv4Interface('192.168.2.35/255.255.0.0')

print(interface.network)

#192.168.0.0/16

print(interface.network.network_address)

#192.168.0.0

print(interface.network.broadcast_address)

#192.168.255.255
 

, '.0.0', ip)
print(output) # prints 192.168.0.0

Комментарии:

1. Или вы можете просто заменить в '.0.0' качестве замены: re.sub(r'.d .d $', '.0.0', ip) . Кроме того, не забудьте import re .

Ответ №3:

Зависит от логики, которую вы пытаетесь применить .. если вы просто хотите изменить строку, другие ответы верны.

Однако, если вы хотите получить сетевой адрес для подсети, в которой находится адрес, вы должны правильно обрабатывать адреса и использовать ipaddress модуль.

Это поможет в вычислении правильных сетевых и широковещательных адресов, а также позволит вам проверять включения в сетях и т. Д.