Преобразование в диапазон в Python - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу преобразовать список в диапазон.

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 голосов
/ 13 ноября 2018

Вы можете создать цикл, который проверяет текущий элемент как 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...