On Fri, 29 May 2009 11:44:30 +0100, Marius Retegan
<marius.s.rete...@gmail.com> wrote:
Hi,
On Fri, May 29, 2009 at 2:09 AM, Gary Herron
<gher...@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.
It would have. At the very least, it would have told us that you've
missed a common idiom.
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.
Not posting code (or code snippets at least) makes it more likely that
you'll
be told to RTFM, you do realise!
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.
I'd be tempted to do it like this
dict_of_dicts = {}
current_dict = {}
current_name = "dummy"
f = open(filename)
for line in f:
# Do something to skip blank lines
if line == '\n':
continue
# A normal 'key value' pair?
if line.startswith(' '):
# Yup. Split apart the key and value,
# and add them to the current dictionary
current_dict.update([line.split()])
elif line == 'end':
# Wrap up what we've got and save the dictionary
dict_of_dicts[current_name] = current_dict
current_name = dummy
current_dict = {}
else:
# New section. Really ought to whinge if
# we haven't ended the old section.
current_name = line.strip()
current_dict = {}
You can then pull the parameter sets you want out of
dict_of_dicts (you can probably think of a more meaningful
name for it, but I don't know the context you're working in).
In real code I would use regular expressions rather than
`startswith` and the equality because they cope more easily
with tabs, newlines and other 'invisible' whitespace.
--
Rhodri James *-* Wildebeeste Herder to the Masses
--
http://mail.python.org/mailman/listinfo/python-list