Finding nested delimiters - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Finding nested delimiters (/thread-7699.html) |
Finding nested delimiters - wfsteadman - Jan-21-2018 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 RE: Finding nested delimiters - Gribouillis - Jan-21-2018 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) RE: Finding nested delimiters - wfsteadman - Jan-22-2018 I am not sure how this code would work to parse through a large file and find the nested configs RE: Finding nested delimiters - Gribouillis - Jan-22-2018 (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 configsThis 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 {} ? RE: Finding nested delimiters - DeaD_EyE - Jan-22-2018 Parsing is not easy. Maybe you'll find here your solution: http://www.dabeaz.com/ply/PLYTalk.pdf |