Как преобразовать число (несколько точек и ноль) в IP-адрес в Python - PullRequest
0 голосов
/ 18 марта 2019

У меня есть число, подобное приведенному ниже:

0100.8900.0033

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

file1 = open('sysid.txt', 'r')
file2 = open('sysip.txt', 'w')
file1_cont = file1.readlines()
for line in file1_cont:
    line = line.replace('.', '')
    file2.write(line)

Я должен преобразовать указанное выше число в 010089000033, удалив точку и пробел.

Как убрать нежелательный ноль '0' и установить точку '.'таким образом, он может наконец рассматриваться как IP-адрес.

Пример ввода:

010.089.000.033

Окончательный результат в виде IP-адреса ниже:

10.89.0.33

Пожалуйста, посоветуйте дополнительно,Благодаря.

1 Ответ

1 голос
/ 18 марта 2019

Просто удалите точки, разбейте строку на 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'
...