fork download
  1. import re
  2.  
  3. string = """
  4. .1.3.6.1.4.1.14823.1.1.27 {
  5. TYPE = Switch
  6. VENDOR = Aruba
  7. MODEL = ArubaS3500-48T
  8. CERTIFICATION = CERTIFIED
  9. CONT = Aruba-Switch
  10. HEALTH = ARUBA-Controller
  11. VLAN = Dot1q INSTRUMENTATION:
  12. Card-Fault = ArubaController:DeviceID
  13. CPU/Memory = ArubaController:DeviceID
  14. Environment = ArubaSysExt:DeviceID
  15. Interface-Fault = MIB2
  16. Interface-Performance = MIB2
  17. Port-Fault = MIB2
  18. Port-Performance = MIB2
  19. }
  20.  
  21. .1.3.6.1.4.1.14823.1.1.28 {
  22. TYPE = Switch
  23. VENDOR = Aruba
  24. MODEL = ArubaS3500-48T
  25. CERTIFICATION = CERTIFIED
  26. CONT = Aruba-Switch
  27. HEALTH = ARUBA-Controller
  28. VLAN = Dot1q INSTRUMENTATION:
  29. Card-Fault = ArubaController:DeviceID
  30. CPU/Memory = ArubaController:DeviceID
  31. Environment = ArubaSysExt:DeviceID
  32. Interface-Fault = MIB2
  33. Interface-Performance = MIB2
  34. Port-Fault = MIB2
  35. Port-Performance = MIB2
  36. }
  37. """
  38.  
  39. rx_outer = re.compile(r'^\s*(?P<key>\.[\d.]+)\s*{(?P<values>[^{}]+)}', re.MULTILINE)
  40. rx_inner = re.compile(r'(?P<key>\b[A-Z][-/\w]+\b)\s*=\s*(?P<value>.+)')
  41.  
  42. result = {item.group('key'):
  43. {match.group('key'): match.group('value')
  44. for match in rx_inner.finditer(item.group('values'))}
  45. for item in rx_outer.finditer(string)}
  46. print(result)
  47.  
Success #stdin #stdout 0.02s 27800KB
stdin
Standard input is empty
stdout
{'.1.3.6.1.4.1.14823.1.1.27': {'CERTIFICATION': 'CERTIFIED', 'Interface-Fault': 'MIB2', 'Environment': 'ArubaSysExt:DeviceID', 'Port-Performance': 'MIB2 ', 'VLAN': 'Dot1q    INSTRUMENTATION:', 'VENDOR': 'Aruba', 'Interface-Performance': 'MIB2', 'TYPE': 'Switch', 'CPU/Memory': 'ArubaController:DeviceID', 'Card-Fault': 'ArubaController:DeviceID', 'MODEL': 'ArubaS3500-48T', 'HEALTH': 'ARUBA-Controller', 'Port-Fault': 'MIB2', 'CONT': 'Aruba-Switch'}, '.1.3.6.1.4.1.14823.1.1.28': {'CERTIFICATION': 'CERTIFIED', 'Interface-Fault': 'MIB2', 'Environment': 'ArubaSysExt:DeviceID', 'Port-Performance': 'MIB2 ', 'VLAN': 'Dot1q    INSTRUMENTATION:', 'VENDOR': 'Aruba', 'Interface-Performance': 'MIB2', 'TYPE': 'Switch', 'CPU/Memory': 'ArubaController:DeviceID', 'Card-Fault': 'ArubaController:DeviceID', 'MODEL': 'ArubaS3500-48T', 'HEALTH': 'ARUBA-Controller', 'Port-Fault': 'MIB2', 'CONT': 'Aruba-Switch'}}