【python基础教程】csv文件的写入与读取

news2024/10/6 14:30:50

✅作者简介:大家好我是hacker707,大家可以叫我hacker
📃个人主页:hacker707的csdn博客
🔥系列专栏:python基础教程
💬推荐一款模拟面试、刷题神器👉点击跳转进入网站

在这里插入图片描述

csv文件读写

  • csv的简单介绍
    • csv的写入
    • 第一种写入方法(通过创建writer对象)
    • 第二种写入方法(使用DictWriter可以使用字典的方式将数据写入)
      • csv的读取
      • 通过reader()读取
      • 通过dictreader()读取

csv的简单介绍

CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件。python自带了csv模块,专门用于处理csv文件的读取

csv的写入

1通过创建writer对象,主要用到2个方法。一个是writerow,写入一行。另一个是writerows写入多行
2使用DictWriter 可以使用字典的方式把数据写入进去

第一种写入方法(通过创建writer对象)

✅先来说一下第一种写入的方法:通过创建writer对象写入(每次写入一行)
步骤:1.创建数据和表头2.创建writer对象3.写表头4.遍历列表,将每一行数据写入csv
代码如下:

import csv

person = [('xxx', 18, 193), ('yyy', 18, 182), ('zzz', 19, 185)]
# 表头
header = ['name', 'age', 'height']

with open('person.csv', 'w', encoding='utf-8') as file_obj:
    # 1:创建writer对象
    writer = csv.writer(file_obj)
    # 2:写表头
    writer.writerow(header)
    # 3:遍历列表,将每一行的数据写入csv
    for p in person:
        writer.writerow(p)

写入完就会在当前目录下出现一个person.csv文件,鼠标右键点击show in Explorer打开person.csv查看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开以后会发现写入的数据中间会换行
居然:那么应该怎么解决这个问题呢
hacker:很简单啊
只需要在写入数据的时候加上一个参数 newline=‘’为了防止换行写入
改正后的代码如下:

import csv

# 数据
person = [('xxx', 18, 193), ('yyy', 18, 182), ('zzz', 19, 185)]
# 表头
header = ['name', 'age', 'height']

with open('person.csv', 'w', encoding='utf-8', newline='') as file_obj:
    # 创建对象
    writer = csv.writer(file_obj)
    # 写表头
    writer.writerow(header)
    # 遍历,将每一行的数据写入csv
    for p in person:
        writer.writerow(p)

在这里插入图片描述
✅通过创建writer对象(一次性写入多行)
步骤:1.创建数据和表头2.创建writer对象3.写表头4.在writerows里传入你要处理的数据

import csv

# 数据
person = [('xxx', 18, 193), ('yyy', 18, 182), ('zzz', 19, 185)]
# 表头
header = ['name', 'age', 'height']

with open('person.csv', 'w', encoding='utf-8', newline='') as file_obj:
    # 创建对象
    writer = csv.writer(file_obj)
    # 写表头
    writer.writerow(header)
    # 3.写入数据(一次性写入多行)
    writer.writerows(person)

写入结果如下:

在这里插入图片描述

第二种写入方法(使用DictWriter可以使用字典的方式将数据写入)

注意事项:使用字典的方式写入要注意传递的数据格式必须是字典
如果不是字典的话会报错

AttributeError: ‘tuple’ object has no attribute ‘keys’

步骤1.创建数据和表头( 数据必须是字典格式)2.创建DictWriter对象3.写表头4.写入数据

import csv

# 数据
person = [
    {'name': 'xxx', 'age': 18, 'height': 193},
    {'name': 'yyy', 'age': 18, 'height': 182},
    {'name': 'zzz', 'age': 19, 'height': 185},
]
# 表头
header = ['name', 'age', 'height']

with open('person.csv', 'w', encoding='utf-8', newline='') as file_obj:
    # 1.创建DicetWriter对象
    dictWriter = csv.DictWriter(file_obj, header)
    # 2.写表头
    dictWriter.writeheader()
    # 3.写入数据(一次性写入多行)
    dictWriter.writerows(person)

在这里插入图片描述

csv的读取

通过reader()读取

import csv

with open('person.csv', 'r', encoding='utf-8') as file_obj:
    # 1.创建reader对象
    reader = csv.reader(file_obj)
    print(reader)

如果直接打印会返回csv.reader对象,这时需要遍历列表

<_csv.reader object at 0x000001FB8CE655F8>

改正代码如下:

import csv

with open('person.csv', 'r', encoding='utf-8') as file_obj:
    # 1.创建reader对象
    reader = csv.reader(file_obj)
    # 2.遍历进行读取数据
    for r in reader:
        print(r)

读取结果如下:

['name', 'age', 'height']
['xxx', '18', '193']
['yyy', '18', '182']
['zzz', '19', '185']

如果想打印列表的某一个值,可以使用索引打印

print(r[0])
name
xxx
yyy
zzz

通过dictreader()读取

import csv

with open('person.csv', 'r', encoding='utf-8') as file_obj:
    # 1.创建reader对象
    dictReader = csv.DictReader(file_obj)
    # 2.遍历进行读取数据
    for r in dictReader:
        print(r)

返回结果如下:

OrderedDict([('name', 'xxx'), ('age', '18'), ('height', '193')])
OrderedDict([('name', 'yyy'), ('age', '18'), ('height', '182')])
OrderedDict([('name', 'zzz'), ('age', '19'), ('height', '185')])

这时我们如果要取到某一个值就需要指定键去寻找值

print(r['name'])
xxx
yyy
zzz

以上就是python基础教程之csv文件的写入和读取,如果有改进的建议,欢迎在评论区留言奥~
💖人生苦短,我用python💖
在这里插入图片描述

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

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

相关文章

MAC怎么获取文件路径 MAC获取文件路径的四种方法

MAC怎么获取文件路径介绍 方法一&#xff1a;最简单的方法 右键文件或者文件夹&#xff0c;选择显示简介 2在弹出来的窗口中找到位置&#xff0c;即为路径&#xff0c;在mac 10.10之前的系统是正常的路径&#xff0c;10.10开始是小箭头代替/显示&#xff0c;注意&#xff0c…

Git操作不规范,战友提刀来相见。

年终奖都没了&#xff0c;还要扣我绩效&#xff0c;门都没有&#xff0c;哈哈。 这波骚Git操作我也是第一次用&#xff0c;担心闪了腰&#xff0c;所以不仅做了备份&#xff0c;也做了笔记&#xff0c;分享给大家。 文末留言抽奖&#xff0c;聊聊你的年终奖。 问题描述 小A和…

2023年最新Python安装详细教程

目录 一、python官网 二、在官网的Downloads栏目&#xff0c;选择对应的操作系统 三、进入windows对应的页面&#xff0c;选择python版本 (1)选择python的稳定发布版本Stable Releases (2)下载python的安装程序Windows Installer 四、运行安装python的安装程序Windows Install…

【郭东白架构课 模块二:创造价值】25|节点四:架构规划之需求确认

你好&#xff0c;我是郭东白。 上节课我们讲了架构规划这个环节的第一个部分&#xff0c;也就是统一语义。那么这节课我们就来讲第二个部分——需求确认。 需求确认与统一语义的过程是密不可分的。需求确认是在统一语义赋能之下进行的&#xff0c;所以两者并不是先后顺序的关系…

【模拟IC】MOM 电容 和 MIM 电容的简介与比较

文章目录 一、MIM和MOM电容简介1、MIM (Metal-Insulator-Metal)电容2、MOM(Metal-Oxide-Metal)电容 二、 先进工艺下&#xff0c;MIM 和 MOM 电容的比较1、单位面积容值2、工艺实现和电压系数3、电容密度受频率的影响(稳定性&#xff09;4、自谐振频率随面积的变化5、品质因数6…

ChatGPT火爆科研圈,登上《Nature》《Science》正刊

ChatGPT火出圈了&#xff0c;几乎涉及到各行各业的每个领域&#xff0c;科研圈更甚。 《Science》期刊主编H. HOLDEN THORP发表关于ChatGPT的社论&#xff1a; “ChatGPT is fun, but not an author”。 “ChatGPT 很好玩&#xff0c;但不是作者” 文章指出&#xff0c;许多担忧…

JavaWeb-CSS的盒模型与弹性布局

目录 CSS的盒模型边框内边距外边距块级元素水平居中 弹性布局常用的一些属性justify-contentalign-items CSS的盒模型 每一个HTML就相当于一个矩形的"盒子". 这个盒子由以下几个部分组成 边框 border内容 content(下图中间蓝色部分)内边距 padding外边距 margin 边…

【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

“未来的软件长什么样&#xff1f;” 一位妹子产品经理问我&#xff1a;“你说说未来的软件ui是什么样的&#xff1f;听到这个问题我先是诧异了一下&#xff0c;随即陷入了沉思。” 我看着眼前的产品经理&#xff0c;她是一位比较年轻干练的女强人类型&#xff0c;1.65的身材…

Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸娄 怎么解决?

新入手的苹果电脑打开软件出现&#xff1a;“已损坏&#xff0c;无法打开。您应该将它移到废纸娄” 或 “已损坏&#xff0c;打不开。推出磁盘映像”。这个怎么解决&#xff1f; 第一部分&#xff1a; 1、点菜单栏搜索图标&#xff0c;输入&#xff1a;终端 &#xff0c;找到后…

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛省赛&#xff08;第二场&#xff09;&#xff0c;C/C 大学B组题解 文章目录 第1题 —— 练习 &#xff08;5分&#xff09;第2题 —— 三角回文数 &#xff08;5分&#xff09;第3题 —— 卡片 &#xff08;10分&#xff09;第4题 —— 考勤刷卡 …

软考A计划-真题-分类精讲汇总-第九章(数据结构与算法基础)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

Unity VR开发教程 OpenXR+XR Interaction Toolkit (一) 安装和配置

文章目录 &#x1f4d5;前言❓什么是 OpenXR❓什么是 XR Interaction Toolkit &#x1f4d5;教程说明&#x1f4d5;第一步&#xff1a;导入 OpenXR&#x1f4d5;第二步&#xff1a;导入 XR Interaction Toolkit⭐导入 Starter Assets⭐添加 Preset⭐设置 Preset Manager 的 Fil…

VLAN(含配置命令行)

一、VLAN的概念及优势 虚拟局域网&#xff08;VLAN&#xff09;是一组逻辑上的设备和用户&#xff0c;这些设备和用户并不受物理位置的限制&#xff0c;可以根据功能、部门及应用等因素将它们组织起来&#xff0c;相互之间的通信就好像它们在同一个网段中一样&#xff0c;由此得…

分布式计算实验4 随机信号分析系统

一、实验要求 利用MOM消息队列技术实现一个分布式随机信号分析系统&#xff0c;具体要求&#xff1a; 1.随机信号产生器微服务每隔100毫秒左右就产生一个正态分布的随机数字&#xff0c;并作为一个消息发布。 2.一个随机信号统计分析微服务&#xff0c;对信号进行如下分析&a…

【开发工具 - vscode】vscode配置C/C++运行环境

【开发工具 - VSCode】vscode配置C/C环境 准备工作第一步 下载vscode第二步 下载mingw第三步 将mingw添加至系统变量中第四步 打开VsCode安装一下必要的插件 正式开始配置第一步 新建个存放C/C文件的文件夹&#xff0c;并新建个cpp文件配置方法一 借助run code 插件的配置方法 …

c语言平方(c语言平方怎么打)

C语言中怎么求平方 a^6 是a和6的异或&#xff0c;并不是5的6次幂。 你的程序会如下计算&#xff1a; 5是101 &#xff0c;6是110&#xff0c;你的答案你一定是011&#xff0c;也就是3~C语言中^是指抑或运算符&#xff0c;不是求幂的。你要求平方就 ba*a;6次方就乘6次。#include…

java调用chatgpt接口,实现专属于自己的人工智能助手

文章目录 前言导包基本说明请求参数响应参数创建请求和响应的VO类 代码编写使用最后说明 前言 今天突然突发奇想&#xff0c;就想要用java来调用chatget的接口&#xff0c;实现自己的聊天机器人&#xff0c;但是网上找文章&#xff0c;属实是少的可怜(可能是不让发吧)。找到了…

Unity鼠标带动物体运动的三种方法

目录 第一种&#xff1a;物体跟随鼠标移动。 第二种&#xff1a;鼠标拖动物体运动。 第三种&#xff1a;鼠标点到哪&#xff0c;物体运动到哪。 第一种&#xff1a;物体跟随鼠标移动。 描述&#xff1a;鼠标左键点击物体&#xff0c;将物体拾起&#xff0c;松开鼠标左键&…

每日一练蓝桥杯C语言:2020年真题题集(B组)

在这里我给大家推荐一款不错刷算法学习网站&#xff1a;点击这处链接牛客网&#xff1b;牛客网作为国内内容超级丰富的 IT 题库&#xff0c;各种东西看的我眼花缭乱&#xff0c;题库面试学习求职讨论大厂内推等等服务&#xff0c;堪称"互联网求职神器"。它好就好在不…

MySQL(九):MVCC能否解决幻读问题

尺有所短&#xff0c;寸有所长&#xff1b;不忘初心&#xff0c;方得始终。 请关注公众号&#xff1a;星河之码 幻读【前后多次读取&#xff0c;数据总量不一致】 同一个事务里面连续执行两次同样的sql语句&#xff0c;可能导致不同结果的问题&#xff0c;第二次sql语句可能会返…