Как определить количество символов до и после точки?

Задача заключается в том, что нужно определить кол-во знаков до и после точки у ip, грубо говоря проверка правильности ввода ip адреса.

Например, пользователь вводит:

192.168.0.0 - тут всё ок и система пропускает т.е. True

192.168.1234.0 - вот тут уже система должна заругаться и не пропустить т.е. False, надеюсь все понимают почему ))

Вот думаю как бы это всё по компактней оформить


Ответы (2 шт):

Автор решения: eri

Есть модуль в стандартном наборе для расбора ip адресов

import ipaddress

ipaddress.ip_address("192.168.0.0")
IPv4Address('192.168.0.0')

ipaddress.ip_address('192.168.1234.0')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.10/ipaddress.py", line 54, in ip_address
    raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
ValueError: '192.168.1234.0' does not appear to be an IPv4 or IPv6 address

Через try/except можно делать проверки

Или так:

for i in map(int, "192.168.1234.0".split('.')):
    if i > 255 or i<0: raise ValueError('bad ip address')

Но например 127.1 или 192.168.1895 являются нормальными ip адресами и проверка на количество цифр не корректна в принципе.

→ Ссылка
Автор решения: SergFSM

еще так:

ip = '192.168.0.0'

all(-1<int(i)<256 for i in ip.split('.'))  # True

UPD

про использование цепочек операторов сравнения в Python - документация.

Comparisons can be chained arbitrarily; for example, x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).

→ Ссылка