extract to dictionaries

Gary Herron gherron at islandtraining.com
Fri May 29 11:22:12 EDT 2009


Marius Retegan wrote:
> Hi,
>
> On Fri, May 29, 2009 at 2:09 AM, Gary Herron 
> <gherron at islandtraining.com <mailto:gherron at islandtraining.com>> wrote:
>
>     Marius Retegan wrote:
>
>         Hello
>         I have simple text file that I have to parse. It looks
>         something like
>         this:
>
>         parameters1
>             key1 value1
>             key2 value2
>         end
>
>         parameters2
>             key1 value1
>             key2 value2
>         end
>
>         So I want to create two dictionaries parameters1={key1:value1,
>         key2:value2} and the same for parameters2.
>
>         I would appreciate any help that could help me solve this.
>         Thank you
>          
>
>
>     This looks like a homework problem. 
>
>
> It's not. I'm passed homework age.
>  
>
>       But even if it's not, you are not likely to find someone who is
>     willing to put more work into this problem than you have.
>     So  why don't you show us what you've tried, and see if someone is
>     willing to make suggestions or answer specific question about your
>     attempt at a solution?
>
>
> I don't now if posting a code that gets into a while loop and never 
> stops would demonstrate to you that I've tried. Be assured that before 
> posting to the list I did try to solve it myself, because I knew that 
> I might get an answer like RTFM or similar.
> Maybe I'm not smart enough, but I can't make python to start reading 
> after the "parameter1" line and stop at the "end" line. That's all I 
> want a small piece of pseudocode to do just that.

OK.  Assuming you are open a file with something like:
f = open('data', 'r')

Then this will read lines up to the first "parameters" line
for line in f:
    if line.startswith('parameters'):
       break

At this point, line contains 'parameters1\n'.  Do with it as you will.

Then read and process lines until an end line is reached
for line in f:
    if line.beginswith('end'):
        break
    # Here line contains  '    key1 value1\n'.
    # Perhaps use line.strip to remove the white space on each end
    # and k,v =line.split() to split out the two values on the line.

You'll need more:
  A loop to keep the above two going until the end of file
  A way to recognize the end of the file.

Gary Herron

>
> Thanks
>  
>
>
>     Gary Herron
>
>




More information about the Python-list mailing list