Python 如何將字串轉為字典

2021-09-29 04:28:13 字數 2218 閱讀 3023

在工作中遇到乙個小問題,需要將乙個 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 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 ...