Py学习  »  Python

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

chenoi • 5 年前 • 1769 次点击  

我有一个数字如下:

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

请进一步通知。谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52586
文章 [ 1 ]  |  最新文章 5 年前
chepner
Reply   •   1 楼
chepner    6 年前

只需去掉点,把字符串分成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 内景 回到 str公司 ):

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