Search code examples
pythonstringmatrixconverters

string convert matrix python


enter image description herehow can i convert the following output to array or matrix.


Solution

  • So to get it into a dataframe, I would do something like this.

    import pandas as pd 
    
    txt= """Interface IP-Address OK? Method Status Protocol
    Vlan1 unassigned YES NVRAM administratively down down
    Vlan5 10.0.5.4 YES NVRAM up up
    Vlan16 unassigned YES NVRAM up up
    Vlan19 172.16.205.205 YES NVRAM up up
    Vlan33 172.16.33.4 YES NVRAM up up
    Vlan41 192.168.11.4 YES NVRAM up up
    Vlan192 192.168.10.4 YES NVRAM up up
    Vlan200 192.168.3.4 YES NVRAM up up
    GigabitEthernet0/1 unassigned YES unset down down
    GigabitEthernet0/2 unassigned YES unset down down
    GigabitEthernet0/3 unassigned YES unset down down
    GigabitEthernet0/4 unassigned YES unset down down
    GigabitEthernet0/5 unassigned YES unset up up
    GigabitEthernet0/6 unassigned YES unset down down
    GigabitEthernet0/7 unassigned YES unset down down
    GigabitEthernet0/8 unassigned YES unset up up
    GigabitEthernet0/9 unassigned YES unset up up
    GigabitEthernet0/10 unassigned YES unset down down
    GigabitEthernet0/11 unassigned YES unset down down
    GigabitEthernet0/12 unassigned YES unset up up
    GigabitEthernet0/13 unassigned YES unset administratively down down
    GigabitEthernet0/14 unassigned YES unset down down
    GigabitEthernet0/15 unassigned YES unset down down 
    GigabitEthernet0/16 unassigned YES unset down down 
    GigabitEthernet0/17 unassigned YES unset up up 
    GigabitEthernet0/18 unassigned YES unset up up 
    GigabitEthernet0/19 unassigned YES unset up up 
    GigabitEthernet0/20 unassigned YES unset down down 
    GigabitEthernet0/21 unassigned YES unset up up 
    GigabitEthernet0/22 unassigned YES unset up up 
    GigabitEthernet0/23 unassigned YES unset up up 
    GigabitEthernet0/24 unassigned YES unset down down 
    GigabitEthernet0/25 unassigned YES unset up up"""
    
    
    #split endlines and subsequently split on spaces
    #use filter(None,split_line) is used to remove any accidental lone spaces what would result in " "
    split_text = [list(filter(None,line.split(" "))) for line in txt.replace("\r","").split("\n")]
    #if split on spaces adminstarively up/down will be a problem as it would make for length 7, so if length 7 combine the words.
    split_text = [[split_lines[0],split_lines[1],split_lines[2],split_lines[3],split_lines[4] + " "+ split_lines[5],split_lines[6]] if len(split_lines) > 6 else split_lines for split_lines in split_text]
    
    #skip first line (as those are the columns) 
    dataframe = pd.DataFrame(split_text[1:],columns=split_text[0])
    
    print(dataframe.head(10)) #prints the first 10 elements
    
    

    The output of the first 10 elements is this.

                Interface      IP-Address  OK? Method                 Status Protocol
    0               Vlan1      unassigned  YES  NVRAM  administratively down     down
    1               Vlan5        10.0.5.4  YES  NVRAM                     up       up
    2              Vlan16      unassigned  YES  NVRAM                     up       up
    3              Vlan19  172.16.205.205  YES  NVRAM                     up       up
    4              Vlan33     172.16.33.4  YES  NVRAM                     up       up
    5              Vlan41    192.168.11.4  YES  NVRAM                     up       up
    6             Vlan192    192.168.10.4  YES  NVRAM                     up       up
    7             Vlan200     192.168.3.4  YES  NVRAM                     up       up
    8  GigabitEthernet0/1      unassigned  YES  unset                   down     down
    9  GigabitEthernet0/2      unassigned  YES  unset                   down     down