Python3操作读写CSV文件使用包过程解析


Posted in Python onApril 10, 2020

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符串格式化%s%d%f详解
Feb 02 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
利用Python计算KS的实例详解
Mar 03 Python
python自动下载图片的方法示例
Mar 25 Python
Python如何急速下载第三方库详解
Nov 02 Python
Python 远程开关机的方法
Nov 18 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
python实现简单石头剪刀布游戏
Oct 24 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
快速解决jupyter启动卡死的问题
Apr 10 #Python
Python操作Jira库常用方法解析
Apr 10 #Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 #Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 #Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 #Python
调整Jupyter notebook的启动目录操作
Apr 10 #Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 #Python
You might like
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
Python操作列表的常用方法分享
2014/02/13 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python list转矩阵的实例讲解
2018/08/04 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Django多个app urls配置代码实例
2020/11/26 Python
Python 多进程原理及实现
2020/12/21 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
会计专业应届生自荐信
2014/02/07 职场文书
财政专业求职信范文
2014/02/19 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
部门活动策划方案
2014/08/16 职场文书
论文答辩开场白大全
2015/05/27 职场文书
宇宙与人观后感
2015/06/05 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android