在工作中遇到乙個小問題,需要將乙個python
的字串轉為字典,比如字串:
user_info =
''
我們想把它轉為下面的字典:
user_dict =
有以下幾種方法:
>>
>
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
)
>>
> 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)
>>
>
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將字串轉為字典最佳實踐
在工作中我們經常會遇到資料型別之間的互轉的問題,而通常我們請求一些api藉口返回的結果就是字串,但是格式是json的,在python中轉為字典是最易處理的,所以這裡記錄一下在python下把字串轉為字典的三種方法。source code usr bin env python3 author nock...
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...