Python字典与字符串的互转实例
本文将介绍如何在Python中实现字典和字符串的互相转换,可以帮助我们在处理数据的时候更加高效和方便。
1. 将字典转换为字符串
将字典转换为字符串的常用方法是使用json.dumps()
或str()
函数。这两种方法的区别在于json.dumps()
方法可以将字典中的特殊类型,如datetime对象,转换为可序列化的字符串格式。下面是代码示例:
import json
# 将字典转换为字符串
my_dict = {'name': 'Tom', 'age': 18, 'birthday': '2000-01-01'}
my_str_1 = json.dumps(my_dict) # 使用json.dumps()方法
my_str_2 = str(my_dict) # 使用str()函数
print(my_str_1)
print(my_str_2)
运行结果为:
{"name": "Tom", "age": 18, "birthday": "2000-01-01"}
{'name': 'Tom', 'age': 18, 'birthday': '2000-01-01'}
这两种方法的区别在于my_dict
中存在datetime类型时,使用json.dumps()
方法可以正常转换,而使用str()
函数会报错。
2. 将字符串转换为字典
将字符串转换为字典的常用方法是使用json.loads()
或eval()
函数。需要注意的是,使用eval()
函数会存在安全隐患,因此建议在转换字符串时使用json.loads()
方法。下面是代码示例:
import json
# 将字符串转换为字典
my_str = '{"name": "Tom", "age": 18, "birthday": "2000-01-01"}'
my_dict_1 = json.loads(my_str) # 使用json.loads()方法
my_dict_2 = eval(my_str) # 使用eval()函数
print(my_dict_1)
print(my_dict_2)
运行结果为:
{'name': 'Tom', 'age': 18, 'birthday': '2000-01-01'}
{'name': 'Tom', 'age': 18, 'birthday': '2000-01-01'}
我们可以看到,使用json.loads()
方法和eval()
函数都可以将字符串转换为字典,但是使用eval()
函数存在安全隐患,因此建议使用json.loads()
方法。
3. 示例说明
下面是两个实际场景的示例说明:
示例1:从文件中读取数据
在读取存储数据的文件时,我们需要将文件中的字符串内容转换为字典对象。下面是代码示例:
import json
# 从文件中读取数据
with open('data.txt', 'r') as f:
data_str = f.read()
data_dict = json.loads(data_str)
print(data_dict)
其中,文件data.txt
中存储的数据格式为:
{"name": "Tom", "age": 18, "birthday": "2000-01-01"}
示例2:将数据存储到数据库中
在将数据存储到数据库中时,我们需要将字典对象转换为字符串。下面是代码示例:
import json
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='test')
# 将数据插入数据库
my_dict = {'name': 'Tom', 'age': 18, 'birthday': '2000-01-01'}
data_str = json.dumps(my_dict) # 将字典转换为字符串
cur = conn.cursor()
cur.execute("INSERT INTO `user` (`id`, `data`) VALUES (null, %s)", (data_str,))
conn.commit()
cur.close()
conn.close()
其中,user
表的结构为:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data` text COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
经过代码示例的演示,我们了解了Python中字典和字符串的互相转换实现方法以及使用场景。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 字典与字符串的互转实例 - Python技术站