找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1947|回复: 3

[求助] 字符串处理求助

2

主题

8

帖子

8

积分

贫民

积分
8
ee326 发表于 2019-11-26 15:26:05 | 显示全部楼层 |阅读模式
本帖最后由 ee326 于 2019-11-27 15:20 编辑

请问该如何做,将下列字符串
vlan 3041 profile single
  bindinterface s192.168.111 cisco
  ip host192.168.111.230
  ip host192.168.111.231
  ip host192.168.111.232/30

转成

vlan 3041 profile single
  bindinterface s192.168.111 cisco
  ip host192.168.111.230
  ip host192.168.111.231
  ip host192.168.111.232
  ip host 192.168.111.233
  ip host 192.168.111.234
  ip host 192.168.111.235

烦请协助,谢谢

example.txt

3.45 KB, 下载次数: 2

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-26 19:59:47 | 显示全部楼层
可变长子网掩码,掩码是30,也就是4个地址,第一个是地址段地址,最后一个是广播地址,就剩两个host地址,是不是这样?
回复 支持 反对

使用道具 举报

2

主题

8

帖子

8

积分

贫民

积分
8
ee326  楼主| 发表于 2019-11-27 15:22:45 | 显示全部楼层
代表四个 ip ,不管 netmask
回复 支持 反对

使用道具 举报

2

主题

8

帖子

8

积分

贫民

积分
8
ee326  楼主| 发表于 2019-11-28 16:03:25 | 显示全部楼层
問題解決了

import re

with open('example.txt', 'r', encoding='utf-8') as rf:
    lines = rf.readlines()
with open('example-aft.txt', 'w', encoding='utf-8') as wf:
    for index, line in enumerate(lines):
        if line.startswith('  ip host'):
            data = re.search(r'(.*)\W(\d+)/30', line)
            if data:
                prefix_ip = data.group(1)
                multi_1 = int(data.group(2))
                multi_2 = int(data.group(2)) + 1
                multi_3 = int(data.group(2)) + 2
                multi_4 = int(data.group(2)) + 3

                ip_1 = prefix_ip + "." + str(multi_1) + "\n"
                ip_2 = prefix_ip + "." + str(multi_2) + "\n"
                ip_3 = prefix_ip + "." + str(multi_3) + "\n"
                ip_4 = prefix_ip + "." + str(multi_4) + "\n"
                ip_sum = ip_1+ip_2+ip_3+ip_4
                lines[index] = '%s' %ip_sum
    wf.writelines(lines)

    print('END')
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表