在Python中转换为范围

时间:2018-11-13 06:59:58

标签: list python-2.6

我想将列表转换为范围。

a = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8', 'Eth1/9', 'Eth1/10','Eth2/1', 'Eth2/2', 'Eth2/3', 'Eth2/4', 'Eth2/5', 'Eth2/6','Eth3/1', 'Eth3/2', 'Eth3/3', 'Eth3/4', 'Eth3/5', 'Eth3/6','Eth4/1', 'Eth4/2', 'Eth4/3', 'Eth4/4', 'Eth4/5', 'Eth4/6']

我正在尝试什么:

fp = open('mode.txt' , 'w+')
for i in a:           
            fp.write('confi ' + i + '\n mode \n')

我正在寻找什么:

confi Eth1/1-5
  mode
confi Eth1/6-10
  mode
confi Eth2/1-6
  mode
confi Eth3/1-6
  mode
confi Eth4/1-6
  mode

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个循环,将当前元素检查为start。如果它以Eth1开头,则将其后的第4个元素作为end。否则,请保留开始的Eth_,遍历列表,直到获得最后一个Eth_元素,或者直到列表结束。将最后一个元素分配为end

a = ['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8', 'Eth1/9', 'Eth1/10','Eth2/1', 'Eth2/2', 'Eth2/3', 'Eth2/4', 'Eth2/5', 'Eth2/6','Eth3/1', 'Eth3/2', 'Eth3/3', 'Eth3/4', 'Eth3/5', 'Eth3/6','Eth4/1', 'Eth4/2', 'Eth4/3', 'Eth4/4', 'Eth4/5', 'Eth4/6']
i = 0

while i < len(a):
    start = a[i].split('/')
    if (start[0] == 'Eth1'):
        i += 5
    else:
        key = start[0]
        i += 1
        while i < len(a) and a[i].split('/')[0] == key:
            i += 1
    end = a[i-1].split('/')
    print('confi ' + start[0] + '/' + start[1] + '-' + end[1] + '\n mode\n')