parsing a dictionary from a string

Fredrik Lundh fredrik at pythonware.com
Fri Dec 15 13:28:13 EST 2006


Benjamin Georgi wrote:

> I could use some help extracting the keys/values of a list of 
> dictionaries from a string that is just the str() representation of the 
> list (the problem is related to some flat file format I'm using for file 
> IO).
> 
> Example:
>  >>> s = str(dict_list)
>  >>> s
> '[{0: [2], 1: []}, {0: [], 1: [], 2: []}, {0: [1, 2]}]'
> 
> Then, what I want to do is to reconstruct dict_list given s.
> Now, one possible solution would be
> 
>  >>> dict_list = eval(s)
> 
> but since the content of s cannot be blindly trusted I`d rather not do 
> it that way. Basically my question is whether there is another solution 
> which is simpler than using regular expressions.

here are a couple of cut-and-paste alternatives:

use the tokenizer and a simple parser pattern:

   http://groups.google.com/group/comp.lang.python/msg/a34397ba74892b4e

use the compiler module and analyze the parse tree:

   http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/364469

note that you cannot parse Python's expression syntax with plain regular 
expressions; RE's are only good enough for lexical analysis.

</F>




More information about the Python-list mailing list