Home > Backend Development > Python Tutorial > How to turn a string into a dictionary in python

How to turn a string into a dictionary in python

Release: 2019-07-05 14:27:29
Original
9439 people have browsed it

How to turn a string into a dictionary in python

For example, string:

user_info = '{"name" : "john", "gender" : "male", "age": 28}'
Copy after login

We want to convert it into the following dictionary:

user_dict = {"name" : "john", "gender" : "male", "age": 28}
Copy after login

There are several methods:

1. Convert through json

>>> import json
>>> user_info= '{"name" : "john", "gender" : "male", "age": 28}'
>>> user_dict = json.loads(user_info)
>>> user_dict
{u'gender': u'male', u'age': 28, u'name': u'john'}
Copy after login

But there is a potential problem in using json for conversion.

The json syntax stipulates that strings in arrays or objects must use double quotes, single quotes cannot be used (there is a description on the official website: "A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes" ). Therefore, the following conversion is wrong:

>>> import json
>>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
# 由于字符串使用单引号,会导致运行出错
>>> user_dict = json.loads(user_info)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)
Copy after login

2. Converting through eval

>>> user_info = &#39;{"name" : "john", "gender" : "male", "age": 28}&#39;
>>> user_dict = eval(user_info)
>>> user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}
>>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
>>> user_dict = eval(user_info)
>>> user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}
Copy after login

does not have the problem of using json to convert above. However, there are security issues with using eval.

3. Using ast.literal_eval for conversion does not have the problem of using json for conversion, nor does it have the security problem of using eval for conversion, so it is recommended to use ast. literal_eval.

For more Python related technical articles, please visit the

Python Tutorial

column to learn!

The above is the detailed content of How to turn a string into a dictionary in python. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template