Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型。在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文本的方式存储数据表。今天,我将给大家分享在Python中如何操作CSV文件。
一、数据源
首先,我们来看看本次操作的数据源,图1 CSV文件是在Excel中打开的,图2 CSV文件是在Notepad++中打开的,我们在图2中可以看到数值之间是以逗号分隔开的,每行末尾是CR回车符和LF换行符(请注意,Linux系统以LF结尾,MacOS系统以CR结尾)。
二、使用Python基本语法读写CSV文件
使用基本语法读取CSV文件中的数据大概思路是:获取文件对象,读取表头,按逗号分隔符拆分表头字段,使用for循环语句获取表体记录数据,拆分后再次写入另一张CSV文件中(如果要将数据写入xls*格式的文件中,请参考前期公众号文章),步骤如下:
Step 1:导入必要模块,获取输入输出文件路径。
import sys
infile = sys.argv[1]
outfile = sys.argv[2]
Step 2:使用open内置函数获取文件对象。
with open(infile, "r", newline='') as fr, open(outfile, "w", newline='') as fw:
Step 3:使用文件对象的readline方法或者迭代器的next方法读取表头(文件对象是一个迭代器对象,支持迭代协议),使用str.split方法对表头进行拆分(注意,要使用strip函数去掉尾部换行符)。
header = next(fr)
header = header.strip()
header_list = header.split(",")
Step 4:既然表头已经查分好了,我们需要将表头写入文件对象中(注意尾部需要添加一个换行符哦)。
fw.write(",".join(map(str, header_list)) + "\n")
当然,上面的代码也可以这么写:
print(*header_list, sep=",", file=fw)
Step 5:使用for循环读取表体数据,并将其拆分成列表写入到文件中。
for row in fr:
row = row.strip()
row_list = row.split(",")
fw.write(",".join(map(str, header_list)) + "\n")
以上步骤完成后,在命令提示符中输入:
python csvrw.py inputfile.csv outputfile.csv
输入输出csv文件名称以及脚本名称请自定义,以上只是举例说明。
以上代码如下:
三、使用csv模块读写CSV文件
csv模块是Python内置的一个模块,它考虑了csv文件中的各种复杂情况,平时处理文件基本上使用此模块,下面来看看csv模块处理csv文件的方式,其步骤如下:
Step 1:首先,导入必要模块,获取输入输出文件路径。
import sys
import csv
infile = sys.argv[1]
outfile = sys.argv[2]
Step 2:使用open内置函数获取文件对象。
with open(infile, "r", newline='') as incsv, open(outfile, "w", newline='') as outcsv:
Step 3:使用csv模块中的reader和writer函数分别获取reader和writer对象。
freader = csv.reader(incsv, delimiter=",")
fwriter = csv.writer(outcsv, delimiter=",")
Step 4:使用for循环语句读取和写入数据。
for rowlist in freader:
fwriter.writerow(rowlist)
以上步骤完成后,在命令提示符中输入相应命令即可(请参照)
代码如下:
四、使用pandas读写CSV文件
pandas库是一个强大的数据处理和数据分析库,使用pandas处理csv文件更简单,其步骤如下:
Step 1:首先,导入必要模块,获取输入输出文件路径。
import sys
import pandas as pd
infile = sys.argv[1]
outfile = sys.argv[2]
Step 2:使用pandas的read_csv方法将数据存储到一个DataFrame对象中。
dataframe = pd.read_csv(infile)
Step 3:然后使用DataFrame的to_csv方法将其输出到另一张csv表中。
dataframe.to_csv(outfile, index=False)
以上步骤完成后,在命令提示符中输入相应命令即可(请参照)
代码如下:
CSV文件在Python中的几种处理方式的更多相关文章
-
python中的三种输入方式
python中的三种输入方式 python2.X python2.x中以下三个函数都支持: raw_input() input() sys.stdin.readline() raw_input( )将 ...
-
python 中的三种等待方式
为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错( An element could not be located on the page using the ...
-
Python中的三种数据结构
Python中,有3种内建的数据结构:列表.元组和字典.1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目.列表中的项目应该包括在方括号中,这 ...
-
Python 中的几种矩阵乘法 np.dot, np.multiply, *【转】
本文转载自:https://blog.csdn.net/u012609509/article/details/70230204 Python中的几种矩阵乘法1. 同线性代数中矩阵乘法的定义: np.d ...
-
简单谈谈Python中的几种常见的数据类型
简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...
-
Java学习-014-文本文件写入实例源代码(两种写入方式)
此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: /** * @fun ...
-
Asp.Net中的三种分页方式
Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...
-
SQL Server中的三种Join方式
1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...
-
PHP中的6种加密方式
PHP中的6种加密方式 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串. raw ...
随机推荐
-
python获取命令行输出结果
#coding=utf-8 import os command = 'ping www.baidu.com ' #可以直接在命令行中执行的命令 r = os.popen(command) #执行该 ...
-
Transfer-Encoding: chunked
Http1.1中 使用 chunked 编码传送时 没有CONTENT_LENGTH,下载之前无法确定要下载的大小. Wininet中已经内嵌该传输协议,要查看chunked块的大小只能socket底 ...
-
LeetCode Kth Largest Element in an Array (快速排序)
题意: 在一个无序的数组中第k大的数是多少? 思路: 按照快排的思路,如果每次分成两段后,设为L和R.如果R>=k ,则答案在右边集合,否则在左边集合. 这里用了3位取中法.注意快排别给写死循环 ...
-
cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
-
Oracle的几种索引
Oracle 提供了多种不同类型的索引以供使用.简单地说, Oracle 中包括如下索引: 1. B* 树索引 这些是我所说的 “ 传统 “ 索引.到目前为止,这是 Oracle 和大多数其他数据库中 ...
-
写给初学者css优先级问题
首先需要搞清楚几个基本概念 1.内嵌样式: 写在元素标签内的例如:<div style="background-color:red"> </div> 2.内 ...
-
C#生成MD5码
/// <summary> /// 获取文件的MD5码 /// </summary> /// <param name="fileName">传入 ...
-
WordCount结对项目
合作者:201631062124,201631062423 代码地址:https://gitee.com/yryx/WordCount 作业地址:https://edu.cnblogs.com/cam ...
-
CSS3 新增颜色表示方式
一.CSS1&2颜色表示方式(W3C标准) 1.Color name 颜色名称方式(用颜色关键字表示对应的颜色.) 例如:red(红色).blue(蓝色).pink(粉色) 优点:方便快捷而 ...
-
Spring-3.2.5 + Quartz-2.2.1 集群实例(Tomcat+Memcached+Quartz集群session共享)
本例中我启动了两个Tomcat作效果测试,先看效果图: 现在我们关闭一个Tomcat 注意红线的位置和设置的参数有关 #org.quartz.jobStore.clusterCheckinInterv ...