如何将数字(多点和零)转换为 Python 中的 IP 地址

How to convert a number (multiple dot and zero) to IP address in Python

我有如下号码:

0100.8900.0033

下面是用于去除前面的点和白色的示例代码space:

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)

我必须通过删除点和白色 space 将上面的数字转换为 010089000033

如何删除不需要的零“0”并设置点“.”以便最终可以将其视为IP地址。

示例输入:

010.089.000.033

以下 IP 地址的最终结果:

10.89.0.33

请多多指教。谢谢。

只需删除点,将字符串拆分为 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。 (我不确定哪个更有时间效率或 space 效率;使用字符串,或从 strint 再回到 str 的往返):

>>> '{}.{}.{}.{}'.format(*map(int, f(s.replace('.', ''))))
'10.89.0.33'