Просто удалите точки, разбейте строку на 3-значные куски и объедините их с точками.
>>> from operator import itemgetter
>>> f = itemgetter(slice(0,3), slice(3,6), slice(6,9), slice(9,12))
>>> s = "0100.8900.0033"
>>> '.'.join(f(s.replace('.','')))
'010.089.000.033'
Если начальные нули действительно являются проблемой, я не уверен, что есть эффективный способудалить их.Я бы пошел с
>>> '.'.join(['0' if octet == '000' else octet.lstrip("0") for octet in f(s.replace('.', ''))])
'10.89.0.33'
Или обработал бы каждую строку как int
.(Я не уверен, что более экономно по времени или пространству; работа со строками или циклическое отключение от str
до int
и обратно до str
):
>>> '{}.{}.{}.{}'.format(*map(int, f(s.replace('.', ''))))
'10.89.0.33'