社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

chenoi • 5 年前 • 1560 次点击  

我有一个数字如下:

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
 
1560 次点击  
文章 [ 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'