如何將字串轉為字典(Python 的坑)

2022-03-20 00:07:53 字數 2196 閱讀 1708

在工作中遇到乙個小問題,需要將乙個python的字串轉為字典,比如字串:

user_info = ''
我們想把它轉為下面的字典:

user_dict =
有以下幾種方法:

1、通過 json 來轉換

>>> import json

>>> user_info= ''

>>> user_dict = json.loads(user_info)

>>> user_dict

但是使用json進行轉換存在乙個潛在的問題。

>>> import json

>>> user_info = ""

# 由於字串使用單引號,會導致執行出錯

>>> user_dict = json.loads(user_info)

traceback (most recent call last):

file "", line 1, in 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)

2、通過 eval

>>> user_info = ''

>>> user_dict = eval(user_info)

>>> user_dict

>>> user_info = ""

>>> user_dict = eval(user_info)

>>> user_dict

通過eval進行轉換就不存在上面使用json進行轉換的問題。但是,使用eval卻存在安全性的問題,比如下面的例子:

# 讓使用者輸入 `user_info`

>>> user_info = raw_input('input user info: ')

# 輸入 ,沒問題

>>> user_dict = eval(user_info)

# 輸入 __import__('os').system('dir'),user_dict 會列出當前的目錄檔案!

# 再輸入一些刪除命令,則可以把整個目錄清空了!

>>> user_dict = eval(user_info)

3、通過 literal_eval

>>> import ast

>>> user = ''

>>> user_dict = ast.literal_eval(user)

>>> user_dict

user_info = ""

>>> user_dict = ast.literal_eval(user)

>>> user_dict

使用ast.literal_eval進行轉換既不存在使用json進行轉換的問題,也不存在使用eval進行轉換的安全性問題,因此推薦使用ast.literal_eval

Python 如何將字串轉為字典

在工作中遇到乙個小問題,需要將乙個python的字串轉為字典,比如字串 user info 我們想把它轉為下面的字典 user dict 有以下幾種方法 1 通過 json 來轉換 import json user info user dict json.loads user info user d...

Python 如何將字串轉為字典

在工作中遇到乙個小問題,需要將乙個 python 的字串轉為字典,比如字串 user info 我們想把它轉為下面的字典 user dict 有以下幾種方法 1 通過 json 來轉換 import json user info user dict json.loads user info user...

Python 如何將字串轉為字典

在工作中遇到乙個小問題,需要將乙個 python 的字串轉為字典,比如字串 user info 我們想把它轉為下面的字典 user info 有以下幾種方法 通過 json 來轉換 import json user info user dict json.loads user info user d...