【Python基础】一文搞懂:Python 中 csv 文件的写入与读取

文章目录

    • 1 引言
    • 2 CSV 文件简介
    • 3 Python 中的 csv 模块
    • 4 写入 CSV 文件
      • 4.1 基本用法
      • 4.2 高级用法
    • 5 读取 CSV 文件
      • 5.1 基本用法
      • 5.2 高级用法
    • 6 实例演示
    • 7 注意事项
    • 8 总结

1 引言

在数据处理和数据分析领域,CSV (逗号分隔值) 文件是一种常见的文件格式,用于存储表格数据。Python 通过内置的 csv 模块提供了对 CSV 文件的读写支持,使得处理这种类型的文件变得简单高效。本文将详细介绍如何在 Python 中进行 CSV 文件的读取和写入操作。

2 CSV 文件简介

CSV 文件是一种简单的文本文件,其中的数据由逗号分隔。每行代表一个数据记录,每个记录可以包含多个字段。CSV 文件被广泛用于数据交换和数据存储。

3 Python 中的 csv 模块

Python 的 csv 模块提供了一系列函数来读取和写入 CSV 文件。它可以处理各种类型的 CSV 数据,包括不同的分隔符和引号约定。

4 写入 CSV 文件

4.1 基本用法

import csv

# 数据
data = [
    ['Name', 'Age', 'City'],
    ['Alice', 30, 'New York'],
    ['Bob', 25, 'Los Angeles']
]

# 写入 CSV 文件
with open('example.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

4.2 高级用法

使用 DictWriter 写入 CSV,提供了字段名的映射。

with open('example.csv', 'w', newline='') as file:
    fields = ['Name', 'Age', 'City']
    writer = csv.DictWriter(file, fieldnames=fields)

    writer.writeheader()
    writer.writerow({'Name': 'Alice', 'Age': 30, 'City': 'New York'})
    writer.writerow({'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'})

5 读取 CSV 文件

5.1 基本用法

# 读取 CSV 文件
with open('example.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

5.2 高级用法

使用 DictReader 读取 CSV,每行数据被映射到一个字典。

with open('example.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)

6 实例演示

以下是一个 Python 示例,演示如何使用 csv 模块来读取和写入 CSV 文件。这个示例将包含两个主要部分:一个用于写入 CSV 文件的函数和另一个用于读取 CSV 文件的函数。我们将这些功能封装在一个名为 csv_example.py 的 Python 文件中。

# csv_example.py
import csv

def write_csv(file_name, data, field_names=None):
    """ 写入 CSV 文件 """
    with open(file_name, 'w', newline='', encoding='utf-8') as file:
        if field_names:
            writer = csv.DictWriter(file, fieldnames=field_names)
            writer.writeheader()
            writer.writerows(data)
        else:
            writer = csv.writer(file)
            writer.writerows(data)

def read_csv(file_name):
    """ 读取 CSV 文件 """
    with open(file_name, 'r', newline='', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)

def main():
    # CSV 文件名
    file_name = 'example.csv'

    # 数据 - 字典格式
    data_dict = [
        {'Name': 'Alice', 'Age': 30, 'City': 'New York'},
        {'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'}
    ]

    # 数据 - 列表格式
    data_list = [
        ['Name', 'Age', 'City'],
        ['Alice', 30, 'New York'],
        ['Bob', 25, 'Los Angeles']
    ]

    # 写入 CSV 文件
    write_csv(file_name, data_dict, field_names=['Name', 'Age', 'City'])
    # 或者使用列表数据
    # write_csv(file_name, data_list)

    # 读取 CSV 文件
    read_csv(file_name)

if __name__ == '__main__':
    main()

运行以上代码控制台输出结果:
[‘Name’, ‘Age’, ‘City’]
[‘Alice’, ‘30’, ‘New York’]
[‘Bob’, ‘25’, ‘Los Angeles’]
并生成文件:“example.csv”,内容如下:
在这里插入图片描述

这个脚本定义了两个函数:write_csvread_csvwrite_csv 函数可以根据传入的数据格式(字典或列表)将数据写入 CSV 文件。read_csv 函数则用于读取 CSV 文件并打印其内容。main 函数中整合了这些操作的流程。运行这个脚本将会创建一个名为 example.csv 的文件,并在其中写入数据,然后读取并打印出这些数据。

7 注意事项

  • 读写文件时,确保使用 newline='' 参数来防止在不同平台上的换行符问题。
  • 对于包含特殊字符的字段,如逗号或引号,csv 模块可以正确处理它们。
  • 在使用 DictReaderDictWriter 时,字段名的顺序是很重要的。

8 总结

Python 中的 csv 模块为处理 CSV 文件提供了强大且灵活的工具。无论您是在进行数据分析还是简单的数据导入导出,掌握如何有效地读写 CSV 文件都是一项非常有用的技能。


希望这篇文章能帮助您理解和掌握 Python 中 CSV 文件的读写操作。如果您有任何疑问或建议,请在评论区留言,让我们共同进步!

作者:climber1121
链接:https://blog.csdn.net/climber1121
来源:CSDN
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day31 贪心算法 part01 理论基础 455.分发饼干 376.摆动序列 53.最大子序和

贪心算法 part01 理论基础 455.分发饼干 376.摆动序列 53.最大子序和 理论基础(转载自代码随想录) 什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如&#…

Qt QProgressBar进度条控件

文章目录 1 属性和方法1.1 值1.2 方向1.3 外观1.4 信号和槽 2 实例2.1 布局2.2 代码实现 QProgressBar是进度条控件,进度条用来指示任务的完成情况 1 属性和方法 QProgressBar有很多属性,完整的可查看帮助文档。这里以QProgressBar为例,列出…

小马识途:十个营销故事 启发营销思路

在营销过程中,优势是相对的,只有凭借着客观的营销环境创造优势才能够取胜市场。在企业营销中,狗猛酒酸的案例比比皆是。接下来,就与小马识途一起来看看十个经典的营销故事吧! 一、摩托车公司 有家德国摩托车公司&…

【Python学习】Python学习13-日期和时间

目录 【Python学习】Python学习13-日期和时间 前言通过time 获取时间戳时间元组获取当前时间,格式化时间格式化时间转换python中时间日期格式化符号获取日历Time 模块日历(Calendar)模块其他模块参考 文章所属专区 Python学习 前言 本章节主…

Sublime Text:提升编码效率的强大代码编辑器

Sublime Text是一款被广大开发者称赞的强大代码编辑器。它以其简洁、高效的设计和功能,成为了众多程序员的首选工具。 Sublime Text的界面简洁大方,没有繁琐的菜单和工具栏,让用户能够专注于代码编写。无论是在Windows、macOS还是Linux操作系…

1 月 21 日,三件事儿,线上不见不散丨社区活动

1 月 21 日,三件事儿,线上不见不散: RTE 开发者社区,三位联合主理人正式亮相,分享对于行业、社区与开发者人才发展的思考;「实时互动行业人才洞察2024」正式发布,关于行业、人才与生态的分析与…

生骨肉冻干推荐测评|希喂、VE、百利、PR等多款热门生骨肉冻干测评

随着养猫的观念逐渐科学化,越来越多的铲屎官开始关注猫咪主食的健康和营养问题。 冻干因其模拟猫咪原始捕猎猎物模型配比、低温加工的特点,被认为是最符合猫咪饮食天性的选择。 相比传统的膨化猫粮,生骨肉冻干中的淀粉和碳水化合物添加较少…

【论文笔记】ZOO: Zeroth Order Optimization

论文(标题写不下了): 《ZOO: Zeroth Order Optimization Based Black-box Attacks to Deep Neural Networks without Training Substitute Models》 Abstract 深度神经网络(DNN)是当今时代最突出的技术之一,在许多机器学习任务中…

常用机床类型的用途和介绍

随着市场对机加工需求的提升,机械加工的技术精度也随之提高,机床的种类也就越来越多。 根据加工方法和使用的工具进行分类,国家将机床编制为11类:车床、钻床、镗床、磨床、齿轮加工机床、螺纹加工机床、铣床、刨床、拔床、锯床等…

【网络安全】【密码学】常见数据加(解)密算法及Python实现(二)、椭圆曲线密码ECC

本文介绍椭圆曲线密码及其Python实现。 一、实验目的 1、 掌握椭圆曲线上的点间四则运算和常见的椭圆曲线密码算法; 2、 了解基于ECC的伪随机数生成算法和基于椭圆曲线的商用密码算法。 二、算法原理 1、算法简介 椭圆曲线密码学(Elliptic Curve Cr…

conda环境下Torch not compiled with CUDA enabled解决方法

1 问题描述 在运行wav2lip模型训练时&#xff0c;报如下错误&#xff1a; Traceback (most recent call last):File "D:\ml\Wav2Lip\preprocess.py", line 32, in <module>fa [face_detection.FaceAlignment(face_detection.LandmarksType._2D, flip_inputF…

[Oracle][详细] Win完全卸载Oracle

前提准备 进入服务 找到Oracle开头的服务 将这些服务全部停止 Top 1 点击开始菜单找到Oracle,然后点击Oracle安装产品,再点击【Universal Installer】 Top 2 点击之后稍等一会然后会进入进入下图界面,点击卸载产品 Top 3 选中要删除的Oracle产品,然后点击【删除】 Top 4 进…

清晰讲解Cookie、Session、Token、JWT之间的区别

文章目录 什么是认证(Authentication)什么是授权(Authorization)什么是凭证(Credentials)什么是Cookie什么是SessionSession的痛点 Cookie 和 Session 的区别什么是Token(令牌)Acesss TokenRefresh Token Token 和 Session 的区别Token 与 Cookie什么是 JWT生成JWTJWT 的原理JW…

指导AI进行推理:提示工程如何弥补RAG系统中的差距

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号(NLP Research) 原文标题:Instructing AI to Reason: How Prompt Engineering Bridges the Gap in RAG Systems 原文地址:https://medium.c…

ROS---激光雷达的使用

ROS—激光雷达的使用 激光雷达是现今机器人尤其是无人车领域及最重要、最关键也是最常见的传感器之一&#xff0c;是机器人感知外界的一种重要手段。本文将介绍在ROS下使用激光雷达传感器&#xff0c;我们选用的激光雷达型号为思岚A1。 使用流程如下: 硬件准备&#xff1b;软…

如何给字符串字段添加索引

MySQL是支持前缀索引的&#xff0c;可以定义字符串的一部分作为索引&#xff0c;如果创建索引的语句不指定前缀长度&#xff0c;那么索引就会包含整个字符串。 alter table SUser add index index1(email);alter table SUser add index index2(email(6)); 如上两个创建索引的语…

openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题

文章目录 openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题194.1 分析查询语句长时间运行的问题194.1.1 问题现象194.1.2 原因分析194.1.3 处理办法 openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时…

【python入门】day24:千年虫问题、京东购物流程、根据星座测试性格特点

千年虫 yList[82,17,73,56,84,0,99] print(原列表&#xff1a;,yList) for index,val in enumerate(yList):yList[index]2000 if val0 else 1900 print(更改后列表&#xff1a;,yList) yList.sort() print(排序后列表&#xff1a;,yList)enumerate的作用&#xff1a;会把列表中…

[金融支付]EMV是什么?

文章目录 EMVCoEMVCo是谁&#xff1f;EMVCo是做什么的&#xff1f;EMVCo是如何运作的&#xff1f;EMVCo 是否强制要求 EMV 规范&#xff1f; EMVEMV的历史背景EMV技术的一些关键点 EMV TechnologiesEMV 认证EMV的三层认证 EMV规范在全球各地存在差异参考 EMVCo EMVCo是谁&…

Kafka的简介及架构

目录 消息队列 产生背景 消息队列介绍 常见的消息队列产品 应用场景 消息队列的消息模型 Kafka的基本介绍 简介 Kafka的架构 Kafka的使用 Kafka的shell命令 Kafka的Python API的操作 完成生产者代码 完成消费者代码 消息队列 产生背景 消息队列:指数据在一个容器…