在工作中遇到乙個小問題,需要將乙個 python 的字串轉為字典,比如字串:
user_info = ''
我們想把它轉為下面的字典:
user_dict =
有以下幾種方法:
1、通過 json 來轉換
import jsonuser_info= 『』
user_dict = json.loads(user_info)
user_dict
但是使用 json 進行轉換存在乙個潛在的問題。
import jsonuser_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 astuser = 『』
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 info 有以下幾種方法 通過 json 來轉換 import json user info user dict json.loads user info user d...
Python 如何將字串常量轉為變數?
1 如何動態生成變數名?m 同學的問題如下 打擾一下大家,請教個問題,已知 list a b c d 如何才能得到以 list 中元素命名的新列表 a b c d 呢?簡單理解,這個問題的意思是,將字串內容作為其它物件的變數名。list 中的元素是字串,此處的 a d 是常量,而在要求的結果中,a ...