一、实验目的
1. 掌握json文件的格式;
2. 掌握json数据的生成方法以及转换成csv文件的方法;
3. 掌握json库、csv库以及列表、字典的基本操作。
二、实验方法
1. 运行环境:PyCharm 2023.3.4 Python 3.10
2. 任务一的基本操作:
|
图片1 任务一流程图 |
3. 任务二的基本操作:
|
图片2 任务二流程图 |
三、实验结果
1. 实验一结果 |
|
图片3 json文件展示 |
2. 实验二结果
|
图片4 csv文件展示 |
四、源代码
1. 任务一源代码
"""
任务一:将数据转换为json数据格式,并保存
"""
# TODO 1 导包
import json
# TODO 2 数据转换与写入
# me是我们要转换的数据
me = [
{
"job": "中级服务器开发",
"company": "乐海互动",
"salary": "10k-18k",
"link": "https://www.lagou.com/jobs/6979476.html?show=d9f79b7ba2664d72acabd9e84a63083d"
},
{
"job": "JAVA应用开发组长",
"company": "新分享科技服务",
"salary": "20k-30k",
"link": "https://www.lagou.com/jobs/7013193.html?show=d9f79b7ba2664d72acabd9e84a63083d"
},
{
"job": "Java高级开发工程师",
"company": "腾讯",
"salary": "15k-25k",
"link": "https://www.lagou.com/jobs/4770607.html?show=d9f79b7ba2664d72acabd9e84a63083d"
},
{
"job": "java开发工程师",
"company": "腾讯",
"salary": "15k-30k",
"link": "https://www.lagou.com/jobs/5401616.html?show=d9f79b7ba2664d72acabd9e84a63083d"
}
]
# 2.1 创建要写入的文件
file = open("Experiment01_Json.json", "w", encoding="utf-8")
# 2.2 将数据转换为json格式
data = json.dumps(me, ensure_ascii=False, indent=2)
# 调整参数ensure_ascii=False,否则仍然会出现乱码的情况
# 这是因为json.dumps序列化时对中文默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False
# indent表示缩进,indent=2表示我们想要缩进的值为2
# 2.3 将数据写入创建的文件当中
file.write(data)
# 2.4关闭文件
file.close()
2. 任务二源代码
"""
任务二:自定义函数实现json格式转csv格式
"""
# TODO 1 导包
import csv
import json
# TODO 2 自定义函数实现json格式转csv格式
def json_to_csv():
# 2.1 读取,创建文件
json_file = open('Experiment01_Json.json', "r", encoding="utf-8") # 读取json文件
csv_file = open('Experiment01_JsonToCsv.csv', "w", encoding="ansi", newline='') # 创建csv文件
# 编码格式如果是utf-8会出现乱码情况,这里选用ansi可以避免这种情况
# 2.2 提取出表头和表的内容
json_data = json.load(json_file)
sheet_title = json_data[0].keys()
sheet_data = []
for data in json_data:
sheet_data.append(data.values())
# 2.3 创建csv写入器
writer = csv.writer(csv_file)
# 2.4 写入表头
writer.writerow(sheet_title)
# 2.5 写入内容
writer.writerows(sheet_data)
# 2.6 关闭文件
json_file.close()
csv_file.close()
# TODO 3 对自定义函数进行调用,并测试
if __name__ == '__main__':
json_to_csv()
五、思考和总结
1. 心得体会
1.1 json数据在python中的使用:
json数据在Python中的识别效果非常好,因为在Python中,json数据就是一个字符串类型(<class 'str'>)的数据结构。Python内置的json库提供了方便的方法来解析和处理json数据,使得在Python中处理json数据变得简单而高效。通过json.load()方法可以将json字符串转换为Python对象,而json.dumps()方法则可以将Python对象转换为json字符串。这种统一的数据表示形式使得不同编程语言之间可以方便地交换和处理数据。 json数据的简洁性和易读性使其成为一种流行的数据交换格式。
1.2 json数据的转换的原因:
数据交换和传输:将数据转换为json格式可以方便在不同系统、不同平台之间进行数据交换和传输。json作为一种通用的数据格式,被广泛支持和应用,可以确保数据在传输过程中的可靠性和一致性。
数据存储:将数据转换为json格式后,可以方便地存储在文件或数据库中。
与Web服务交互:在Web开发中,json格式通常用于客户端和服务器之间的数据交换。通过将数据转换为json格式,可以实现前后端之间的数据传递和交互。
数据处理:json格式具有良好的可读性和易解析性,可以减少数据存储和读取的复杂性。通过解析json数据,可以轻松地提取所需的数据并进行相应的处理和操作。
2. 改进之处
2.1编码格式:
文件的编码格式的查看:
确保以记事本的方式打开文件,可以在记事本界面的右下角查看文件的编码格式,这样可以避免对编码格式进行调试。
|
图片5 文件编码格式的查看 |
dumps()编码格式:可以在上课的时候教同学们对源代码进行查看和解读
json.dumps序列化时对中文默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False
|
图片6 dumps函数源代码查看 |
如果ensure_ascii为false,则返回值可以包含非ascii字符,如果它们出现在obj中包含的字符串中。否则,在json字符串中将转义所有这些字符
python默认编码格式: utf-8
2.2在转换为json格式时,建议设置多层嵌套的数据,以体现json数据的层级结构,这样才能更清晰地展示json数据的优点和高度嵌套的效果。
2.3 json数据的优点:
其具有良好的层级结构和易读性,这种数据结构之所以被广泛应用,是因为它能够灵活地表示复杂的数据关系,易于解析和处理。json数据结构的设计使得数据之间的关联性和层次关系更加清晰,便于数据交换和存储,同时也易于理解和操作。