Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Finding nested delimiters
#1
Greetings all,
I have a configuration file and after much reviewing I found there is some structure to it, but not sure how to reach in and get the elements out of it. So the file can be quite large, but I am trying to parse through some Firewall configurations and what I found is that for every line that starts with 'config' there is a corresponding line that starts with 'end' which make up the block of code. But inside each of these there could be many other config end pairs. For Clarity I indented the text below, but all of these are at the beginning of the line so ^config and ^end. There are other config and end pairs in the code, but they are tab indented so they will not matter.
Is there a module or something that would match brackets or something? Then I could start the script and change every line that startswith 'config' to {config and evey line that startswith 'end' to end} and then be able to parse through it. So at the end of the day:
would be a set of text I would work with etc....

config system global
information
end

config global
    config system global
        information
    end
    config system accprofile
        information
    end
    config system np6
        information
    end
    config system interface
         information   
    end
    config system custom-language
        information    
    end
    config system admin
        information    
    end
end  <<<<< ends the config global from above
config vdom
    config system settings
        information    
    end
    config system replacemsg-group
        information
    end
    config firewall address
        information
    end
    config firewall multicast-address
        information
    end
end <<< ends the config vdom from above
config vdom
    config system settings
        information
    end
    config system replacemsg-group
        information
    end
    config firewall address
        information
    end
    config firewall multicast-address
        information
    end
end  <<< ends the config vdom from above
Reply
#2
If you think it's easier, you can add {} with the re module:
for line in file:
    line = re.sub(r'^(\s*)(begin\s)', r'\1{\2', line)
    line = re.sub(r'^(\s*)end(\s)', r'\1end}\2', line)
    print(line)
Reply
#3
I am not sure how this code would work to parse through a large file and find the nested configs
Reply
#4
(Jan-22-2018, 04:01 AM)wfsteadman Wrote: I am not sure how this code would work to parse through a large file and find the nested configs
This is not what this code does. It only replaces config with {config and end with end}, but that's what you asked
(Jan-21-2018, 07:24 PM)wfsteadman Wrote: Then I could start the script and change every line that startswith 'config' to {config and evey line that startswith 'end' to end} and then be able to parse through it.
Aren't you able to parse through it although I added the {} ?
Reply
#5
Parsing is not easy. Maybe you'll find here your solution: http://www.dabeaz.com/ply/PLYTalk.pdf
My code examples are always for Python >=3.6.0
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Parse String between 2 Delimiters and add as single list items lastyle 5 247 Apr-11-2021, 11:03 PM
Last Post: lastyle
  Split string between two different delimiters, with exceptions DreamingInsanity 2 507 Aug-24-2020, 08:23 AM
Last Post: DreamingInsanity
  Finding value in nested dictionaries with lists mart79 16 1,820 Mar-08-2020, 08:16 PM
Last Post: ndc85430
  Problem with delimiters johnprada 5 857 Jan-29-2020, 10:17 AM
Last Post: DeaD_EyE
  Problem with delimiters johnprada 1 507 Jan-28-2020, 04:27 PM
Last Post: buran
  splitting a string with 2 different delimiters Skaperen 4 868 Dec-30-2019, 04:49 AM
Last Post: BamBi25
  Split a long string into other strings with no delimiters/characters krewlaz 4 807 Nov-15-2019, 02:48 PM
Last Post: ichabod801
  re.split multiple delimiters problem gw1500se 2 1,631 Jun-24-2019, 02:43 PM
Last Post: gw1500se

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020