第十四章:JSON和CSV格式详解及Python操作

news2025/4/1 10:35:19

    在数据处理和开发工作中,JSONCSV是两种非常常见的数据格式。它们各有特点,适用于不同的场景。本文将分别介绍这两种格式的产生原因、应用场景,并结合Python讲解如何操作这两种文件格式,最后用表格总结它们的常用操作及特性资源绑定附上完整资源供读者参考学习!

一、JSON格式

1. 什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但独立于语言,可以在多种编程语言中使用。

2. JSON的产生原因

  • 跨平台数据交换:在Web开发中,前后端需要传递数据,JSON作为一种轻量级格式,可以方便地在不同语言和平台之间传递数据

  • 结构化数据表示:JSON可以很好地表示嵌套结构,适合存储复杂的数据对象。

3. JSON的应用场景

  • API数据传输:RESTful API通常使用JSON格式传递数据。

  • 配置文件:许多应用程序使用JSON作为配置文件格式。

  • 前端与后端交互:前端JavaScript可以直接解析JSON数据,方便数据展示。

4. Python操作JSON文件

4.1 读取JSON文件

Python

​
import json

# 打开并读取JSON文件
with open('data.json', 'r', encoding='utf-8') as file:
    data = json.load(file)

# 使用读取的数据
print(data)
print(data['name'])  # 访问具体字段

​

4.2 写入JSON文件

Python

import json

# 创建一个字典
data = {
    'name': '张三',
    'age': 30,
    'city': '北京'
}

# 将字典写入JSON文件
with open('person.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

5. 实例:创建一个JSON文件作为演示

以下是一个完整的示例,展示如何在Python中创建一个JSON文件,并解释每一步的操作。

5.1 创建一个Python字典

首先,我们创建一个包含一些数据的Python字典。这个字典将被转换为JSON格式

Python

# 创建一个包含个人信息的字典
person = {
    "name": "张三",
    "age": 30,
    "city": "北京",
    "is_student": False,
    "hobbies": ["阅读", "旅行", "编程"],
    "address": {
        "street": "长安街123号",
        "zip_code": "100000"
    }
}

5.2 将字典写入JSON文件

使用Python的json模块将字典写入一个JSON文件。

Python

import json
# 创建一个包含个人信息的字典
person = {
    "name": "张三",
    "age": 30,
    "city": "北京",
    "is_student": False,
    "hobbies": ["阅读", "旅行", "编程"],
    "address": {
        "street": "长安街123号",
        "zip_code": "100000"
    }
}
# 将字典写入JSON文件
with open('person.json', 'w', encoding='utf-8') as file:
    json.dump(person, file, ensure_ascii=False, indent=4)

5.3 运行代码

运行上述代码后,会在当前目录下生成一个名为person.json的文件。打开这个文件,你会看到如下内容:

JSON

{
    "name": "张三",
    "age": 30,
    "city": "北京",
    "is_student": false,
    "hobbies": [
        "阅读",
        "旅行",
        "编程"
    ],
    "address": {
        "street": "长安街123号",
        "zip_code": "100000"
    }
}

5.4 验证和使用JSON文件

你可以读取这个JSON文件并使用其中的数据:

Python

import json

# 读取JSON文件
with open('person.json', 'r', encoding='utf-8') as file:
    data = json.load(file)

# 使用读取的数据
print(data)
print(data['name'])  # 输出:张三
print(data['hobbies'][0])  # 输出:阅读
print(data['address']['street'])  # 输出:长安街123号

二、CSV格式

1. 什么是CSV?

CSV(Comma-Separated Values)是一种简单的文本文件格式,用于存储表格数据,如电子表格或数据库中的数据。每一行是一个数据记录,每个记录由一个或多个字段组成,字段之间以逗号分隔。

2. CSV的产生原因

  • 表格数据存储:CSV格式简单,适合存储表格化数据

  • 数据交换:许多应用程序支持CSV导入导出,方便数据交换。

3. CSV的应用场景

  • 数据导入导出Excel、Google Sheets等工具支持CSV格式。

  • 数据分析:Python的Pandas库可以方便地处理CSV文件。

  • 日志记录:某些系统会以CSV格式记录日志。

4. Python操作CSV文件

4.1 读取CSV文件

Python

​
import csv

# 打开并读取CSV文件
with open('data.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)  # 每行是一个列表

​
4.2 使用DictReader读取CSV文件(带表头)

Python

​
import csv

with open('data.csv', 'r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['name'], row['age'])  # 按列名访问

​
4.3 写入CSV文件

Python

import csv

# 创建数据
data = [
    ['name', 'age', 'city'],
    ['张三', 30, '北京'],
    ['李四', 25, '上海']
]

# 写入CSV文件
with open('2001-2017年北京市水资源情况信息.csv', 'w', encoding='GBK', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

5. 实例:使用Pandas处理CSV文件

Python

​
import pandas as pd

# 读取CSV文件
df = pd.read_csv('data.csv')

# 处理数据
print(df.head())  # 查看前几行
print(df.describe())  # 数据统计

# 筛选数据
filtered_data = df[df['age'] > 25]
print(filtered_data)

​

三、总结:JSON与CSV的常用操作及特性对比

特性JSONCSV
文件结构嵌套结构(对象和数组)表格结构(行和列)
适用场景API数据、配置文件、复杂嵌套数据表格数据、数据导入导出、简单数据存储
文件扩展名.json.csv
读取方式json.load()csv.reader() 或 csv.DictReader()
写入方式json.dump()csv.writer()
数据类型支持支持多种数据类型(字符串、数字、布尔值等)主要支持字符串,需自行解析数据类型
文件大小通常较大(包含键名和结构)通常较小(仅包含值)
可读性结构清晰,适合人类阅读简单直观,适合表格化数据
Python库支持json模块csv模块、pandas

四、总结

JSON和CSV各有优势,选择哪种格式取决于具体需求:

  • 如果需要处理结构化、嵌套的数据,或者用于API通信,JSON是更好的选择。

  • 如果需要处理表格化数据,或者进行数据导入导出,CSV更适合。

   通过Python的标准库(jsoncsv模块)以及第三方库(如pandas),我们可以很方便地操作这两种格式的文件。希望本文能帮助你更好地理解和使用JSON和CSV格式!资源绑定附上完整资源供读者参考学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2324273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双磁条线跟踪控制

1问题 同学反馈小车跟随磁力线,双轮差速小车,左右侧各有2个磁条传感器和各1条磁条线,需要控制小车跟随磁条线轨迹。 2 方法 (1)普通小车可能没有速度反馈,则不考虑转弯半径,仅考虑一个控制关…

树莓派超全系列文档--(7)RaspberryOS播放音频和视频

播放音频和视频 播放音频和视频VLC 媒体播放器vlc GUIvlc CLI使用 cvlc 在没有图形用户界面的情况下播放媒体 在 Raspberry Pi OS Lite 上播放音频和视频指定音频输出设备指定视频输出设备同时指定音频和视频输出设备提高数据流播放性能 文章来源: http://raspberr…

chrome浏览器下载和Chrome浏览器的跨域设置

Chrome浏览器的跨域设置 下载chrome浏览器设置chrome跨域 下载chrome浏览器 点击官方下载,然后逐步安装即可 设置chrome跨域 1、然后在D盘创建个文件夹命名为ChromeDevSession。 2、右击chrome浏览器选择属性。 3、在目标编辑栏的最后加上:–disabl…

【高并发内存池】第六弹---深入理解内存管理机制:ThreadCache、CentralCache与PageCache的回收奥秘

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】【项目详解】 目录 1、threadcache回收内存 2、centralcache回收内存 3、pagecache回收内存 1、threadcache回收内…

累积分布策略思路

一种基于概率密度和累积分布函数的量化交易策略,主要应用于期货市场。该策略通过计算价格数据的概率密度和累积分布函数(CDF),结合移动平均线和ATR(平均真实范围)等技术指标,实现多空交易的自动…

【JavaScript】九、JS基础练习

文章目录 1、练习:对象数组的遍历2、练习:猜数字3、练习:生成随机颜色 1、练习:对象数组的遍历 需求:定义多个对象,存数组,遍历数据渲染生成表格 let students [{ name: 小明, age: 18, gend…

RAG、大模型与智能体的关系

一句话总结: RAG(中文为检索增强生成) 检索技术 LLM 提示。 RAG、大模型与智能体的关系解析 1. 核心概念定义 RAG(检索增强生成) 是一种结合信息检索与生成式模型的框架,通过从外部知识库(如…

Linux中《进程状态--进程调度--进程切换》详细介绍

目录 进程状态Linux内核源代码怎么说运行&&阻塞&&挂起内核链表 进程状态查看Z(zombie)-僵尸进程僵尸进程危害孤儿进程 进程优先级进程切换Linux2.6内核进程O(1)调度队列 进程状态 Linux内核源代码怎么说 为了弄明白正在运⾏的进程是什么意思,我们…

蓝桥杯备考:多米诺骨牌

这道题要求上下方格子和之差要最小,其实就是算每个上下格子的差求和的最小值 这道题其实是动态规划01背包问题 我们直接按步骤做吧 step1:定义状态表示f[i][j]表示从1到i个编号的差值里选出刚好j个数的最小操作次数 step2:推导状态转移方程 如图这就是我们的状态…

AudioFlinger与AudioPoliceManager初始化流程

AF/APF启动流程 在启动AudioSeriver服务的过程中会对启动AF/APF。main_audioserver.cpp有如下代码: AudioFlinger::instantiate();AudioPolicyService::instantiate();AF初始化流程 1.AudioFlinger::instantiate() 1.1 AudioFlinger构造函数 void AudioFlinger:…

网路传输层UDP/TCP

一、端口号 1.端口号 1.1 五元组 端口号(port)标识了一个主机上进行通信的不同的应用程序. 如图所示, 在一个机器上运行着许多进程, 每个进程使用的应用层协议都不一样, 比如FTP, SSH, SMTP, HTTP等. 当主机接收到一个报文中, 网络层一定封装了一个目的ip标识我这台主机, …

Python大数据处理 基本的编程方法

目录 一、实验目的 二、实验要求 三、实验代码 四、实验结果 五、实验体会 一、实验目的 体会基本的python编程方法;学习python中的各类函数;了解python读取与写入文件的方法。 二、实验要求 输入2000年后的某年某月某日,判断这一天是…

STM32F103_LL库+寄存器学习笔记06 - 梳理串口与串行发送“Hello,World“

导言 USART是嵌入式非常重要的通讯方式,它的功能强大、灵活性高且用途广泛。只停留在HAL库层面上用USART只能算是入门,要加深对USART的理解,必须从寄存器层面入手。接下来,先从最简单的USART串行发送开始。 另外,在接…

硬件基础--14_电功率

电功率 电功率:指电流在单位时间内做的功(表示用电器消耗电能快慢的一个物理量)。 单位:瓦特(W),简称瓦。 公式:PUI(U为电压,单位为V,i为电流,单位为A,P为电功率,单位为W)。 单位换算:进位为1000&#xff…

Vue.js 完全指南:从入门到精通

1. Vue.js 简介 1.1 什么是 Vue.js? Vue.js(通常简称为 Vue)是一个用于构建用户界面的渐进式 JavaScript 框架。所谓"渐进式",意味着 Vue 的设计是由浅入深的,你可以根据自己的需求选择使用它的一部分或全部功能。 Vue 最初由尤雨溪(Evan You)在 2014 年创…

在Git仓库的Readme上增加目录页

一般在编写Readme时想要增加像文章那样的目录,方便快速跳转,但是Markdown语法并没有提供这样的方法,但是可以通过超链接结合锚点的方式来实现,如下图是我之前一个项目里写的Readme: 例如有下面几个Readme内容&#xff…

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面,如下图,大概有13处,也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…

【RocketMQRocketMQ Dashbord】Springboot整合RocketMQ

【RocketMQ&&RocketMQ Dashbord】Springboot整合RocketMQ 【一】Mac安装RocketMQ和RocketMQ Dashbord【1】安装RocketMQ(1)下载(2)修改 JVM 参数(3)启动测试(4)关闭测试&…

《白帽子讲 Web 安全》之跨站请求伪造

引言 在数字化时代,网络已深度融入人们生活的方方面面,Web 应用如雨后春笋般蓬勃发展,为人们提供着便捷高效的服务。然而,繁荣的背后却潜藏着诸多安全隐患,跨站请求伪造(CSRF)便是其中极为隐蔽…

K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志

k8s中pod默认时区不是中国的,挂载一个时区可以解决 vi pod.yaml apiVersion: v1 kind: Pod metadata:name: counter spec:containers:- name: countimage: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentargs: [/bin/sh,-c,i0;while true;do …