1. Python / Говнокод #12779

    −103

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    def show_vlans(self):
            """Magic people/Voodoo people. All code in this func should be refactored/rewrited."""
            self.read_very_eager()#flush
            output=self.wr_cmd_sh('sho vlan')
            time.sleep(.1)
            vlans={}
            vlan=''
            for string in output:
                if re.search(r"VID[\s]*:",string):
                   vlan=string[re.search(r"[\d]+",string).start():re.search(r"[\d]+",string).end()]
                   vlans[vlan]={'Member':[], 'Tagged':[], 'Untagged':[]}
                if re.search(r"Member Port[s]*[\s]*:[\s]*[\d]+[[-]*[\d]*]*",string):
                   if '-' in string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()]:
                      for port in xrange(int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[0]),int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[1])+1):
                          vlans[vlan]['Member'].append(port)
                   else:
                        vlans[vlan]['Member'].append(string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()])
                if re.search(r"Current Tagged Port[s]*[\s]*:[\s]*[\d]+[[-]*[\d]*]*",string):
                   if '-' in string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()]:
                      for port in xrange(int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[0]),int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[1])+1):
                          vlans[vlan]['Tagged'].append(port)
                   else:
                        vlans[vlan]['Tagged'].append(string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()])
                if re.search(r"Current Untagged Port[s]*[\s]*:[\s]*[\d]+[[-]*[\d]*]*",string):
                   if '-' in string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()]:
                      for port in xrange(int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[0]),int(string[re.search(r"[\d]+[[-]*[\d]+]*",string).start():re.search(r"[\d]+[[-]*[\d]+]*",string).end()].split('-')[1])+1):
                          vlans[vlan]['Untagged'].append(port)
                   else:
                        vlans[vlan]['Untagged'].append(string[re.search(r"[\d]+[[-]*[\d]*]*",string).start():re.search(r"[\d]+[[-]*[\d]*]*",string).end()])
            if vlans=={}:
               vlans=self.show_vlans()
    
            #####
            return vlans

    Императивненько) регекспотренировка при отсутствии group() да и вообще...

    Запостил: voiper, 21 Марта 2013

    Комментарии (0) RSS

    Добавить комментарий

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код