转换成范围 Python

Converting into range in Python

我想将列表转换为范围。

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

知道怎么做吗?

您可以创建一个循环来检查当前元素作为 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')