Вы можете удалить нули, перед которыми стоит .
или ^
(начало строки), за которыми следует что-либо, кроме .
, с предшествующим ему (.
или началом строки):
import re
def remove_zeros_from_ip(ip_add):
return re.sub('(^|\.)0+(?=[^.])', r'\1', ip_add)
Тест:
ip = '10.0.01.10'
print(remove_zeros_from_ip(ip))
ip1 = '10.00.002.20'
print(remove_zeros_from_ip(ip1))
ip2 = '0010.00.02.0020'
print(remove_zeros_from_ip(ip2))
Вывод:
10.0.1.10
10.0.2.20
10.0.2.20
Решением без регулярных выражений было бы разделить строки на .
и использовать str.rstrip
чтобы удалить начальные нули, затем используйте str.join
для восстановления строки:
def remove_zeros_from_ip(ip_add):
return '.'.join(p.lstrip('0') or '0' for p in ip_add.split('.'))