How to convert Unicode string to dictionary?
Question: I have a string with utf-8 encoding, like

    
    
    >>> print s
    "{u'name':u'Pradip Das'}"
    

Basically I load some data from JSON file and it loads as above. Now, I want
to covert this string in to python dictionary. So I can do like:

    
    
    >>> print d['name']
    'Pradip Das'
    


Answer: You can use the built-in
[`ast.literal_eval`](https://docs.python.org/2/library/ast.html#ast.literal_eval):

    
    
    >>> import ast
    >>> a = ast.literal_eval("{'a' : '1', 'b' : '2'}")
    >>> a
    {'a': '1', 'b': '2'}
    >>> type(a)
    <type 'dict'>
    

This is safer than using `eval`. As the docs itself recommends it:

    
    
    >>> help(ast.literal_eval)
    Help on function literal_eval in module ast:
    
    literal_eval(node_or_string)
        Safely evaluate an expression node or a string containing a Python
        expression.  The string or node provided may only consist of the following
        Python literal structures: strings, numbers, tuples, lists, dicts, booleans,
        and None.
    

Additionally, you can read this
[article](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html)
which will explain why you should avoid using `eval`.

