I have a string output which is in form of a dict ex.
{'key1':'value1','key2':'value2'}
how can make easily save it as a dict and not as a string?
I have a string output which is in form of a dict ex.
{'key1':'value1','key2':'value2'}
how can make easily save it as a dict and not as a string?
astr is a string which is "in the form of a dict". eval() converts it to a python dict object.
astr="{'key1':'value1','key2':'value2'}"
adict=eval(astr)
print(adict)
# {'key1': 'value1', 'key2': 'value2'}
This is best if you're on Python 2.6+, as it's not subject to the security holes in eval.
import ast
s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)
Where are you getting this string from? Is it in JSON format? or python dictionary format? or just some ad-hoc format that happens to be similar to python dictionaries?
If it's JSON, or if it's only a dict, and only contains strings and/or numbers, you can use json.loads
, it's the most safe option as it simply can't parse python code.
This approach has some shortcomings though, if for instance, the strings are enclosed in single quotes '
instead of double quotes "
, not to mention that it only parses json objects/arrays, which only coincidentally happen to share similar syntax with pythons dicts/arrays.
Though I think it's likely the string you're getting is intended to be in JSON format. I make this assumption because it's a common format for data exchange.