【python】如何将字符串转成字典

简介: 【python】如何将字符串转成字典

背景:

在学习Django时候,根据输入的json数据,后端再将数据进行存储,发现后端读取出来的json数据是字符串类型的,即使我使用json.loads()方法来转化也没有转成字典类型

我这就意识到不得不总结记录下。

使用json.loads()进行转化

data='{"name":"fancy","age":18,"home":"china"}'
json_data=json.loads(data)
print("json转化成字典",json_data)
print("json转化成字典的类型",type(json_data))

结果:

json转化成字典 {'name': 'fancy', 'age': 18, 'home': 'china'}

json转化成字典的类型 <class 'dict'>

使用eval()进行转化

data='{"name":"fancy","age":18,"home":"china"}'
dic_data=eval(data)
print("使用eval转化成字典",dic_data)
print("使用eval转化成字典的类型",type(dic_data))

结果:

使用eval转化成字典 {'name': 'fancy', 'age': 18, 'home': 'china'}

使用eval转化成字典的类型 <class 'dict'>

但是,eval()虽然方便,可存在安全问题,因为它不管你输入的是什么内容,都会转成python可以识别的类型

比如这段代码:

input_info=input("os.path.realpath(__file__)")
dic_data=eval(input_info)

输出结果就是:   使用eval转化成字典 /Users/xmly/Desktop/tools/05_jiami/基础知识.py

可想而知,如果输入的是获取数据的代码指令或者是删除数据的指令,那么就存在比较严重的安全隐患了

后面我们可以使用ast.literal_eval()方法

使用ast.literal_eval()进行转化

如果使用ast.literal_eval()再执行上面的操作:

input_info=input("os.path.realpath(__file__)")
dic_data=ast.literal_eval(input_info)

程序会报错,就遏制了不安全的指令输入:

正常转化字符串:

data='{"name":"fancy","age":18,"home":"china"}'
dic_data=ast.literal_eval(data)
print("使用literal_eval转化成字典",dic_data)
print("使用literal_eval转化成字典的类型",type(dic_data))

结果:

使用literal_eval转化成字典 {'name': 'fancy', 'age': 18, 'home': 'china'}

使用literal_eval转化成字典的类型 <class 'dict'>

相关文章
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
54 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
1月前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
55 7
|
1月前
|
索引 Python
Python 高级编程:深入探索字符串切片
在Python中,字符串切片功能强大,可灵活提取特定部分。本文详细介绍切片技巧:基本切片、省略起始或结束索引、使用负数索引、设定步长及反转字符串等。此外,还介绍了如何结合其他操作进行切片处理,如先转换大小写再提取子串。 来源:https://www.wodianping.com/yeyou/2024-10/48238.html
36 4
|
2月前
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
53 13
|
2月前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
|
1月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
31 0
|
1月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
|
1月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
|
1月前
|
存储 Java Serverless
【Python】字典
【Python】字典
27 0
|
1月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)