Python 三种方法字符串转字典
- eval:不安全,容易被用户恶意操作
- ast.literal_eval:安全,专门用于字符串类型转换其他类型
- json:只能转换外单引号,内双引号的字符串
eval和literal_eval
# -*- coding: utf-8 -*-
import json, ast
# TODO: 内单引号,外双引号
s = "{'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']},'产品':{'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'],'产品设计师':['网页产品设计师', '无线产品设计师']}}"
# TODO:外单引号,内双引号
s_ = '{"技术": {"后端开发": ["Java", "C++", "PHP"], "移动开发": ["HTML5", "JavaScrpit"]},"产品":{"产品经理":["产品经理", "网页产品经理", "移动产品经理", "产品助理", "数据产品经理", "电商产品经理", "游戏策划", "产品实习生"],"产品设计师":["网页产品设计师", "无线产品设计师"]}}'
print('s ', type(s), s)
print('s_', type(s_), s_)
## 1. eval
res = eval(s)
print(type(res), res)
res = ast.literal_eval(s)
print(type(res), res)
## 2. literal_eval
res = ast.literal_eval(s)
print(type(res), res)
res = ast.literal_eval(s_)
print(type(res), res)
## 3. json
res = json.loads(s_)
print(type(res), res)
s <class 'str'> {'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']},'产品':{'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'],'产品设计师':['网页产品设计师', '无线产品设计师']}}
s_ <class 'str'> {"技术": {"后端开发": ["Java", "C++", "PHP"], "移动开发": ["HTML5", "JavaScrpit"]},"产品":{"产品经理":["产品经理", "网页产品经理", "移动产品经理", "产品助理", "数据产品经理", "电商产品经理", "游戏策划", "产品实习生"],"产品设计师":["网页产品设计师", "无线产品设计师"]}}
<class 'dict'> {'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']}, '产品': {'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'], '产品设计师': ['网页产品设计师', '无线产品设计师']}}
<class 'dict'> {'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']}, '产品': {'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'], '产品设计师': ['网页产品设计师', '无线产品设计师']}}
<class 'dict'> {'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']}, '产品': {'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'], '产品设计师': ['网页产品设计师', '无线产品设计师']}}
<class 'dict'> {'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']}, '产品': {'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'], '产品设计师': ['网页产品设计师', '无线产品设计师']}}
<class 'dict'> {'技术': {'后端开发': ['Java', 'C++', 'PHP'], '移动开发': ['HTML5', 'JavaScrpit']}, '产品': {'产品经理': ['产品经理', '网页产品经理', '移动产品经理', '产品助理', '数据产品经理', '电商产品经理', '游戏策划', '产品实习生'], '产品设计师': ['网页产品设计师', '无线产品设计师']}}
扩展:Python存储字典的四种方法
https://blog.csdn.net/Spade_/article/details/105515950