求解IP分割问题

有这样的一段ip:"192.168.1.1-5,192.168.1.10-15"
想让他输出成:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
192.168.1.15
有什么好办法么?易语言中我可以用文本处理的方式实现,python还不是很熟,求大神来个思路。

阅读 4.3k
3 个回答
a = "192.168.1.1-5,192.168.1.10-15"

# 根据逗号分隔不同的ip, 结果是一个列表[192.168.1.1-5, 192.168.1.10-15]
for ip in a.split(','):
    # ip就是遍历刚才的列表取得值, 根据.从右到左分割一次ip字符串, 获取结果192.168.1和1-5, 分别存给两个变量
    shuffix, _ = ip.rsplit('.', 1)
    # 用-切分1-5, 得出一个范围区间
    start, end = map(int, _.split('-'))
    for num in range(start, end+1):
        # num为上述范围区间的数, 然后拼接一开始的字符串, 组成新ip
        print('{}.{}'.format(shuffix, num))
# coding: utf-8

import os

str = '192.168.1.1-5,192.168.1.10-15'

for x in str.split(','):
    _, y = os.path.splitext(x)
    start, end = y.replace('.', '').split('-')
    for i in range(int(start), int(end) + 1):
        print '{}.{}'.format(_, i)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# author: 史艳文
import re
ips = "192.168.1.1-5,192.168.1.10-15"
reip = re.compile('(\d+\.\d+\.\d+\.)(\d+)-(\d+)')
for ip in reip.findall(ips):
    for x in [ip[0]+str(x) for x in  range(int(ip[1]),int(ip[2])+1)]:
        print x
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题