Python 使用csv库处理CSV文件的方法
作者:hacker707 发布时间:2023-03-16 21:37:24
标签:python,csv,文件
CSV文件
简单来说CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。
CSV库
Python中集成了专用于处理csv文件的库,名为:csv
。
csv 库中有4个常用的对象:csv.reader
:以列表的形式返回读取的数据;csv.writer
:以列表的形式写入数据;csv.DictReader
:以字典的形式返回读取的数据;csv.DictWriter
:以字典的形式写入数据;
数据处理
原始数据
文件名为"test.csv"
读取数据
使用csv.reader
# 导入 csv 库
import csv
def reader():
# 打开csv文件 此处的delimiter指定了分隔符,不用此参数的话,分隔符默认为逗号
with open("test.csv", mode='rt',encoding="utf-8-sig") as f_in:
reader = csv.reader(f_in,delimiter=',')
# 获取第一行的header
# header[0] = "name"
# header[1] = "sex"
# header[2] = "age"
# header[3] = "score"
header = next(reader)
# 逐行获取数据,并处理
for line in reader:
print(type(line))
此时得到的line是一个list类型
使用csv.DictReader
# 导入 csv 库
import csv
def dict_reader():
# 打开文件
with open("test.csv", mode='rt',encoding="utf-8-sig") as f_in:
# 基于打开的文件,创建csv.DictReader实例
reader = csv.DictReader(f_in)
# 逐行获取数据,并处理
for line in reader:
print(type(line))
此时的line就是一个dict类型
写入数据
注意:
在打开文件时,需要添加newline = “”。否则,会在每2行有效内容之间添加一行空白。
如果要保存的内容有中文,而且之后需要用Excel打开文件,那么需要选用utf-8-sig编码。如果使用utf-8编码,会导致使用Excel查看文件时中文乱码。
使用csv.writer
写入数据
# 导入 csv 库
import csv
def writer():
# 创建列表,保存header内容
header_list = ["name", "sex", "age", "score"]
# 创建列表,保存数据
data_list = [
["aaa", "fm", 20, 80],
["bbb", "fm", 19, 90],
["ccc", "fm", 21, 95]
]
# 以写方式打开文件。注意添加 newline="",否则会在两行数据之间都插入一行空白。
with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f_out:
# 基于打开的文件,创建 csv.writer 实例
writer = csv.writer(f_out)
# 写入 header。
# writerow() 一次只能写入一行。
writer.writerow(header_list)
# 写入数据。
# writerows() 一次写入多行。
writer.writerows(data_list)
输出结果为:
使用csv.DictWriter
写入数据
# 导入 csv 库
import csv
def dict_writer():
# 创建列表,保存header内容
header_list = ["name", "sex", "age", "score"]
# 创建列表,保存数据
data_list = [
{"name":"a", "sex":"m", "age":20, "score":80},
{"name":"bb", "sex":"fm", "age":19, "score":90},
{"name":"ccc", "sex":"fm", "age":21, "score":95},
]
# 以写方式打开文件。注意添加 newline="",否则会在两行数据之间都插入一行空白。
with open("dict_new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f_out:
# 基于打开的文件,创建 csv.DictWriter 实例,将 header 列表作为参数传入。
writer = csv.DictWriter(f_out, header_list)
# 写入 header
writer.writeheader()
# 写入数据
writer.writerows(data_list)
输出结果为:
来源:https://blog.csdn.net/xqe777/article/details/123448967
0
投稿
猜你喜欢
- 用CSS+DIV编写的实现在网页中显示圆角矩形的代码!希望对大家有用!谢谢支持!以下为CSS代码:<style> div.bg{
- 一同事反馈有一MySQL实例因为断电之后,启动不了。用了innodb_force_recovery=6也无效,于是前往查看。排查过程:最早的
- mysql binlog3种格式,row,mixed,statement. 解析工作mysqlbinlog --base64-output=
- subprocess.run()运行并等待args参数指定的指令完成,返回CompletedProcess实例。参数:(*popenargs
- 一、DBMS_REDEFINITION(在线重定义)参考MOS文档:_How To Partition Existing Table Usi
- DOM中的事件模拟三个步骤:首先通过document.createEvent()方法创建event对象,接收一个参数,即表示要创建的事件类型
- 简介:在Windows下的网易邮箱大师客户端中,阅读邮件时,可以使用快捷键Delete删除邮件,然后自动跳到下一封,如果再按一次Delete
- fckconfig.js 中修改 添加 FCKConfig.LineHeights = '100%;150%;200%;250%;3
- Oracle Tips, Tricks & Scripts1. Topic: Compiling Invalid Objects:O
- Bootstrap 轮播(Carousel)插件是一种灵活的响应式的向站点添加滑块的方式。0x01 基本实例Bootstrap实现轮播幻灯片
- StringIO它主要是用在内存读写str中。主要用法就是:from io import StringIOf = StringIO()f.w
- 我就废话不多说了,大家还是直接看代码吧!contacts = ExternalContacts.objects.filter(MobileK
- 本文实例讲述了python自动化测试的过程,分享给大家供大家参考。具体代码如下:import unittest ##############
- opencv读取图像为b,g,r方法,比如img = cv2.imread("xx.jpg")cv2.imshow(&q
- 本文实例为大家分享了python利用opencv实现颜色检测的具体代码,供大家参考,具体内容如下需要实现倒车辅助标记检测的功能,倒车辅助标记
- 如题,我有一个模板,我想根据需求复制模板中间的某一页多次,比如复制第五页,然后复制3次,那么第六页,第七页,第八页都是和第五页一模一样的pp
- Numpy中repeat函数使用Numpy是Python强大的数学计算库,和Scipy一起构建起Python科学计算生态。在本节下面我们重点
- 今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键约束详解。一、MySQL外键约束作用外键约束(Foreign Key)即数
- 需求:根据医保中心的文档和提供的dll动态库调用相关接口下载医保中心的账单。文档:对调用dll动态库的描述,调用哪个dll文件,同时了解清楚
- 先来介绍一些不使用脚本我们直接使用命令备份与还原oracle数据库Oracle数据备份:步骤 1 备份用户数据。1.使用linux系统下的数