Python3操作读写CSV文件使用包过程解析
作者:临渊 发布时间:2022-06-04 03:27:01
CSV(Comma-Separated Values)即逗号分隔值,一种以逗号分隔按行存储的文本文件,所有的值都表现为字符串类型(注意:数字为字符串类型)。
如果CSV中有中文,应以utf-8编码读写,如果要支持Excel查看,应是要用utf-8 with bom格式及utf-8-sig
Python3操作CSV文件使用自带的csv包
reader=csv.reader(f, delimiter=','):用来读取数据,reader为生成器,每次读取一行,每行数据为列表格式,可以通过delimiter参数指定分隔符
writer=csv.writer(f):用来写入数据,按行写入,writer支持writerow(列表)单行写入,和writerows(嵌套列表)批量写入多行,无须手动保存。
当文件中有标题行时,可以使用header=next(reader)先获取到第一行的数据,再进行遍历所有的数据行。
写入时,可以先使用writer.writerow(标题行列表),写入标题行,再使用writer.writerows(多行数据嵌套列表),写入多行数据(也可以逐行写入)。
数据文件data.csv:
name,password
abc,123456
张五,123#456
张#abc123,123456
666,123456
a b,123456
读取示例:
import csv
with open('data.csv', encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader)
print(header)
for row in reader:
print(row)
注意:reader必须在文件打开的上下文中使用,否则文件被关闭后reader无法使用
所有的数字被作为字符串,如果要使用数字格式,应使用int()/float()做相应转换
写入示例:
import csv
header = ['name', 'password', 'status']
data = [
['abc', '123456', 'PASS'],
['张五', '123#456', 'PASS'],
['张#abc123', '123456', 'PASS'],
['666', '123456', 'PASS'],
['a b', '123456', 'PASS']
]
with open('result.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(data)
注意,打开文件时应指定格式为w, 文本写入,不支持wb,二进制写入,当然,也可以使用a/w+/r+
打开文件时,指定不自动添加新行newline='',否则每写入一行就或多一个空行。
如果想写入的文件Excel打开没有乱码,utf-8可以改为utf-8-sig。
结果展示,result.csv内容::
name,password,status
abc,123456,PASS
张五,123#456,PASS
张#abc123,123456,PASS
666,123456,PASS
a b,123456,PASS
使用字典格式的数据:DictReader, DictWriter#
注意数据必须有标题行时才能使用
reader=csv.DictReader(f):直接将标题和每一列数据组装成有序字典(OrderedDict)格式,无须再单独读取标题行
writer=csv.DictWriter(f, 标题行列表):写入时可使用writer.writeheader()写入标题,然后使用writer.writerow(字典格式数据行)或write.writerows(多行数据)
读取示例:
import csv
with open('data.csv', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['name'], row['password'])
写入示例:
import csv
header = ['name', 'password', 'status']
data = [
{'name':'abc', 'password':'123456', 'status':'PASS'},
{'name':'张五', 'password':'123#456', 'status':'PASS'},
{'name':'张#abc123', 'password':'123456', 'status':'PASS'},
{'name':'666', 'password':'123456', 'status':'PASS'},
{'name':'a b', 'password':'123456', 'status':'PASS'}
]
with open('result2.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.DictWriter(f, header)
writer.writeheader()
writer.writerows(data)
写入结果,同result.csv
来源:https://www.cnblogs.com/superhin/p/11495956.html


猜你喜欢
- 本文主要列出来python图形开发GUI库pyqt5的窗体,控件属性与方法如果你想看看python图形开发GUI库pyqt5的基础使用方法可
- 前言:c3p0 是一个开源的数据库连接池,实现了 JDBC 3 规范;本文主要介绍 c3p0 的基本使用,文中使用到的软件版本:Java 1
- 写SQL语句的时候很多时候会用到filter筛选掉一些记录,SQL对筛选条件简称:SARG(search argument/SARG) wh
- 大家在使用python的过程中,应该在敲代码的时候经常遇到str内置函数,为了防止大家搞混,本文整理归纳了str内置函数。1字符串查找类:f
- php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模
- 引入我们在使用mysql数据库时,习惯使用int型作为主键,并设置为自增,这既能够保证唯一,使用起来又很方便,但int型的长度是有限的,如果
- 本文实例讲述了php查找指定目录下指定大小文件的方法。分享给大家供大家参考。具体实现方法如下:php查找文件大小的原理是遍历目录然后再利用f
- XML虽然比JSON复杂,在Web中应用也不如以前多了,不过仍有很多地方在用,所以,有必要了解如何操作XML。DOM vs SAX操作XML
- 基于jquery.jsPlumb编写拓扑图,供大家参考,具体内容如下要求:实现公司组织结构拓扑关系,可展开,可收拢;动态数据展示;叶子节点可
- 如下所示:import urllib.requestimport urllib.parseurl = 'https://weibo.
- 1. 数组数组是 Golang 中的一种基本数据类型,用于存储固定数量的同类型元素。在 Golang 中,数组的长度是固定的,并且必须在定义
- redux-saga在学习它之前先了解es6生成器生成器关键字:yield next()定义函数需要在函数名前急+*号function *t
- 代码import turtleturtle.bgcolor("black")turtle.pensize(2)sizeh
- 在前文说过,如果想要更好的做接口测试,我们要利用自己的代码基础与代码优势,所以该章节不会再介绍商业化的、通用的接口测试工具,重点介绍如何通过
- 继续上一篇,针对Bootstrap Metronic菜单栏整理的笔记分享给大家,供大家参考,具体内容如下1.简介1) .环境配置
- 自带验证器1、UniqueValidator用于验证(唯一)unique=True的字段,常用参数:queryset: required,用
- 本文将通过解读render函数的源码,来分析vue中的vNode是如何创建的。在vue2.x的版本中,无论是直接书写render函数,还是使
- 一、文件基本的操作1、open() 打开文件open() 方法用于打开一个文件,并返回File文件对象,在对文件进行处理过程都需要使用到这个
- 1 前言在工作中时常会有繁重的文案工作,接触了python 之后,就会觉得这个比较简单了,python 操作word 和 excel 是比较
- 大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件:核心是使用了插件 extract-text-webpack-