Writing dictionary to file

Hans-Joachim Widmaier hjwidmai at foxboro.com
Fri Sep 8 03:34:25 EDT 2000


Martijn Faassen:
> If your dictionaries only contain strings:
> 
> # untested!
> 
> import string
> 
> def write_dictionary(f, dict):
>     for key, value in dict.items():
>         f.write(key)
>         f.write(" ")
>         f.write(value)
>         f.write("\n")
> 
> def read_dictionary(f):
>     dict = {}
>     lines = f.readlines()
>     for line in lines:
>         line = string.strip(line)
>         if not line:
>             pass # skip empty lines
>         key, value = string.split(line)
>         dict[key] = value
>     return dict

This of course only works if your strings contain no whitespace, which is a
serious limitation. If your keys are guaranteed to contain no whitespace and
the values do not contain newlines (this is rather often the case), this
approach works with a small modification in read_dictionary():

Instead of
        key, value = string.split(line)
use
        key, value = string.split(line, 1)

I usually seperate the fields with a character that I knew never appeared
in the strings, like a center dot (which is IMHO also visually pleasing when
you look at the file). Newlines are still no go.

--
Hans-Joachim Widmaier




More information about the Python-list mailing list