How to create a dict based on such a file?

aspineux aspineux at gmail.com
Mon Feb 14 02:10:18 EST 2011


On 14 fév, 06:47, Wang Coeus <wangco... at gmail.com> wrote:
> Hi all,
> I am new to python. Currently I encountered a problem, please help me to
> solve this. Thanks in advance!
> I have a file like below:

ConfigParser Library does exacly what you want but with .ini file
format
[block1]
key1=value1
key2=value2
...

Can you change the format of your file ? If so

import ConfigParser
config=ConfigParser.RawConfigParser(config_default)
try:
    config.readfp(open(filename, 'r'))
except Exception, e:
    logging.error('error reading configuration file %s: %s', filename,
e)
    sys.exit(1)

def func(config, key1):
    result={}
    for section in config.sections():
        if config.has_option(section, key1):
            result[section]=config.get(section, key1)
    return result


If not, you need to parse youre file, and the some question :
How or what generate this file, is it always the same format ? Could
it chnage, for exemple for

block1 { key1=value1 key2=value2 }

or at least

block1 {

key1=value1
key2=value2


}

Is-it big, too big to keep in memory ?



> ++++++++++++++++++++++++++++++++++++++
> block1
> {
>   key1=value1
>   key2=value2
>   key3=value3}
>
> block2
> {
>   key1=value4
>   key2=value5
>   key4=value6}
>
> ...
> blockn
> {
>   key1=value7
>   key2=value8
>   keyn=valuen}
>
> +++++++++++++++++++++++++++++++++++++++
> Different block may have different keys and even same key in different
> blocks may have different values.
>
> Now I want to get a function, which like this:
> func(key)
> and it will return a dictionary as below:
> func(key1) = [block1:value1,block2:value4,...,blockn:value7]
> and if one block has no "key1" parameter, it will not include in this
> dict.
>
> Thanks a lot!
> --
> Coeus
> In the middle of every difficulty lies opportunity.
>                 -- Albert Einstein




More information about the Python-list mailing list