import logging serverName = ['Bay Server Name Serial Number Status Power UID Partner\r', '--- ------------------------------------------------- --------------- -------- ------- --- -------\r', ' 1 tty-lab-1 OK On Off \r', ' 2 tty-lab-2 CZ320263P9 OK On Off \r', ' 3 tty-lab-3 CZJ14410KP Failed On Off \r', ' 4 kspve1 CZJ14410KK OK On Off \r', ' 5 kspve2-2 OK On Off \r', ' 6 kspve3 OK On Off \r', ' 7 plaes-blade OK On Off \r', ' 8 Ringly-01 CZ3402Y48C OK On Off \r', ' 9 toomas-lepik CZ3217FNYE OK On Off \r', ' 10 toomas-lepik2 CZ3217FFSS OK On Off \r', ' 11 [Absent] \r', ' 12 erki-naumanis OK On Off \r', ' 13 [Absent] \r', ' 14 [Absent] \r', ' 15 [Absent] \r', ' 16 [Absent] \r'] serverNamePos = [] # Init list # https://stackoverflow.com/a/19842807 haystack = serverName[1] needle = " " for i, _ in enumerate(haystack): if haystack[i:i + len(needle)] == needle: serverNamePos.append(i) # Add results to list. The last positions of each field are indexed, the next one being the seperator. serverNameFields = len(serverNamePos) # How many fields do we have to process n = 2 # What server, 2 is the first one. servers = [] # Init, the results of this. for n in range(2, len(serverName)): # Loop through servers. | Adjust for the first two being headers. # Fields: [BayNumber "Server Name", "Serial Number", "Status", "Power", "UID Partner"] serverNameCurrentTmp = [] # Init for i in range(serverNameFields): if i == 0: # Special case, as i-1 would loop around. serverNameCurrentTmp.append( int( serverName[n][0:serverNamePos[i]].strip() ) ) # Also convert to int, as we know it's a number. else: serverNameCurrentTmp.append( serverName[n][serverNamePos[i-1]+1:serverNamePos[i]].strip() ) # Get ith field by character position. servers.append(serverNameCurrentTmp) logging.debug('Bays:') logging.debug(servers) breakpoint() for n in range(len(servers)): print(n) #print(servers) breakpoint()