如何将数字(多点和零)转换为 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 效率;使用字符串,或从 str
到 int
再回到 str
的往返):
>>> '{}.{}.{}.{}'.format(*map(int, f(s.replace('.', ''))))
'10.89.0.33'
我有如下号码:
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 效率;使用字符串,或从 str
到 int
再回到 str
的往返):
>>> '{}.{}.{}.{}'.format(*map(int, f(s.replace('.', ''))))
'10.89.0.33'