python读取和保存csv文件
文章目录
- writer
- reader
- dialect
- DictWriter和DictReader
csv中最重要的两个函数分别是writer
和reader
。考虑到很多人手头可能没有适合学习操作的csv
文件,所以对csv模块的学习从writer
开始。
writer
>>> import csv
>>> data = [[i*j for j in range(5)] for i in range(5)]
>>> f = open('test.csv','w') #以写模式打开`test.csv`
>>> with f: # with可以在程序段结束后自动close
... w = csv.writer(f)
... for row in data:
... w.writerow(row) #按行写入`row`
从而我们新建了一个csv
文件,其内容如下。
0,0,0,0,00,1,2,3,40,2,4,6,80,3,6,9,120,4,8,12,16
delimiter
参数用于更改列之间的分割符号,默认为,
,若将w
写为w=csv.writer(f,delimiter=' ')
,则得到的csv
文件内容为
0 0 0 0 00 1 2 3 40 2 4 6 80 3 6 9 120 4 8 12 16
reader
reader
是writer
的逆过程,可以按行读取csv
中的数据
>>> f = open('test.csv','r') #通过r模式打开刚刚创建的csv
>>> with f:
... r = csv.reader(f)
... for row in r:
... print(row)
...
['0', '0', '0', '0', '0']
[]
['0', '1', '2', '3', '4']
[]
['0', '2', '4', '6', '8']
[]
['0', '3', '6', '9', '12']
[]
['0', '4', '8', '12', '16']
writer
和reader
中还有quoting
参数,用以设置csv
中识别引号的方式,其可选参数如下
适用于
加引号的字段
csv.QUOTE_ALL
writer
所有字段
csv.QUOTE_MINIMAL
writer
包含特殊字符的字段
csv.QUOTE_NONNUMERIC
writer
reader
非数字字段
将无引号的字段转为float类型
csv.QUOTE_NONE
writer
reader
不适用引号
不处理引号字符
dialect
csv
是一种简单的文件格式,但仍然需要一些设置,比如分隔符以及处理引号的方式等。dialect
便是对某些处理方式的集成,csv.reader
中默认的dialect
为excel
,便相当于声明了使用,
作为分隔符。
通过list_dialects
可以获取当前已经定义的dialect
>>> csv.list_dialects()
['excel', 'excel-tab', 'unix']
这三种dialect分别对应三个已经封装好的类:excel
, excel_tab
, unix_dialect
,其各项参数如下
成员变量
csv.excel
csv.excel_tab
csv.unix_dialect
delimiter
,
,
doublequote
True
True
True
escapechar
None
None
None
lineterminator
quotechar
"
"
"
quoting
0
0
1
skipinitialspace
False
False
False
其中,doublequote
为True表示默认双引号,否则为单引号;escapechar
为None表示禁用转义;lineterminator
表示行结尾;quotechar
表示用于包含特殊字符的字符;skipinitialspace
为False则不忽略分隔符之后的空格。
通过register_dialect
和unregister_dialect
可以新建或者取消dialect
,例如
>>>csv.register_dialect('test',delimiter='-',quoting=csv.QUOTE_NONE)
即创建了一个新的dialect
,其分割符号为-
,而引用模式采取QUOTE_NONE
。
DictWriter和DictReader
reader
和writer
主要用于按行读写数据,其操作的数据一般是list
这种一维可迭代结构。相比之下,DictWriter
和DictReader
可以更加方便地通过字典来操作数据。
例如
>>> dct = [{str(j):i*j for j in range(5)} for i in range(5)]
>>> for i in dct:
... print(i)
...
{'0': 0, '1': 0, '2': 0, '3': 0, '4': 0}
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4}
{'0': 0, '1': 2, '2': 4, '3': 6, '4': 8}
{'0': 0, '1': 3, '2': 6, '3': 9, '4': 12}
{'0': 0, '1': 4, '2': 8, '3': 12, '4': 16}
则通过DictWriter
可将dct
写入csv中,以key
为每一列的标题,以value
为某行对应标题的值。
>>> with open('dict.csv', 'w', newline='') as csvfile:
... titles = list(dct[0].keys())
... w = csv.DictWriter(csvfile,fieldnames=titles)
... for kw in dct:
... w.writerow(kw)
则dict.csv
内容为
0,0,0,0,0
0,1,2,3,4
0,2,4,6,8
0,3,6,9,12
0,4,8,12,16
python读取和保存csv文件相关推荐
- Python使用pandas保存csv文件:如果文件存在则只添加内容(append),如果无表则同时写入表头和内容(write)
Python使用pandas保存csv文件:如果文件存在则只添加内容(append),如果无表则同时写入表头和内容(write) 目录
- python读取和保存json文件
json文件是一种常见的数据存储文件,比txt看着高级点,比xml看着人性化一点. 同时,json作为一种通用协议的文件格式,可以被各种语言方便地读取.所以,json非常适合用来存储结构化的数据. j ...
- python读取多列csv文件_多列上的csvjoin
我有以下csv文件,我想Inner Join CSV 1:行程_数据.csv(250 MB)head -2 rand_trip_data_1.csv medallion,hack_license,ve ...
- python保存mat文件_python读取文件——python读取和保存mat文件
首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法:图片大小 ...
- python保存为mat文件_python读取文件——python读取和保存mat文件-Go语言中文社区
首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法: 图片大 ...
- python读取压缩包中csv文件
#coding=utf-8 import rarfile path = "E:\\New\\New.rar" path2 = "E:\\New"rf = rar ...
- python读取两个csv文件后比较_python – 读取两个csv文件并比较每一行.如果行匹配打印两行,如果不相似则打印无效...
import csv f1 = open("file1.csv") f2 = open("file2.csv") csv_f1 = csv.reader(f1) ...
- csv文件python是怎么输入的,python怎么读取和写入csv文件
Python读取与写入CSV文件需要导入Python自带的CSV模块,然后通过CSV模块中的函数csv.reader()与csv.writer()来进行CSV文件的读取与写入. 写入CSV文件impo ...
- Ubuntu 环境 中 python读取和保存 .txt 、.csv、.json文件数据并绘制图形
一.数据格式 二.程序 read_imu.py # coding=UTF-8import cv2 import numpy as np import matplotlib.pyplot as plt ...
最新文章
- linux 修改图片的尺寸
- unix环境高级编程-线程(2)
- 一篇文章解决机器学习,深度学习入门疑惑
- Autofac 一个使用Demo
- [cocoapods]安装cocoapods
- (转)在WCF服务的ServiceReferences.ClientConfig中使用相对路径
- deepin深度启动盘制作工具下载地址
- matlab gui学习手记_MATLAB论坛不可错过的30例GUI源代码
- 数据不足,如何进行迁移学习?
- Fastformer:简单又好用的Transformer变体!清华MSRA开源线性复杂度的Fastformer!
- 语音转文字的软件APP
- mysql insert表名前不写字段_云计算教程分享Mysql技术知识点
- Linux工作笔记033---Linux(CentOS7)安装zip、unzip命令
- SpringMVC之拦截器实现登录验证
- 基于GEE平台分析湖北省近35年地表水变化特征
- Ubuntu 如何定制桌面解放你的个性?
- 大数据全样而非抽样原理_干货 | 大数据思维的十大核心原理(二)
- 单片机c语言程序包txt,单片机C语言应用100例(第3版)(含光盘1张) pdf epub mobi txt 下载...
- 中英文金额大写转换器
- 声效表达在游戏沉浸方面的影响力
热门文章
- java 自动装箱拆箱_java——自动装箱拆箱
- 职业教育标准教材·计算机组装与维修,中等职业教育计算机专业系列教材:计算机组装与维护...
- vue 为全局变量赋值_vue定义全局变量和全局方法的方法示例
- ShardingSphere系列之Sharding JDBC实现原理
- ActiveReports 大数据分析报告:2018中国电影再次迎来黄金时代
- 使用动态链接库的好处
- java中继承类 student 类例子_java中student类继承问题
- Codeforces Round #628 (Div. 2) D. Ehab the Xorcist
- Linux缓存命令(查看、清理)
- html如何设置对齐,CSS如何设置对齐方式?