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中的几种处理方式的更多相关文章

  1. python中的三种输入方式

    python中的三种输入方式 python2.X python2.x中以下三个函数都支持: raw_input() input() sys.stdin.readline() raw_input( )将 ...

  2. python 中的三种等待方式

    为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错( An element could not be located on the page using the ...

  3. Python中的三种数据结构

    Python中,有3种内建的数据结构:列表.元组和字典.1.列表     list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目.列表中的项目应该包括在方括号中,这 ...

  4. Python 中的几种矩阵乘法 np.dot, np.multiply, *【转】

    本文转载自:https://blog.csdn.net/u012609509/article/details/70230204 Python中的几种矩阵乘法1. 同线性代数中矩阵乘法的定义: np.d ...

  5. 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...

  6. Java学习-014-文本文件写入实例源代码(两种写入方式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: /** * @fun ...

  7. Asp.Net中的三种分页方式

    Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...

  8. SQL Server中的三种Join方式

      1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...

  9. PHP中的6种加密方式

    PHP中的6种加密方式 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str  --  原始字符串. raw ...

随机推荐

  1. Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 的解决办法

    eclipse导入mavn工程报Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 的解决办法: 错 ...

  2. 【五一qbxt】test2

    又犯了一些迷之错误??要不然yy鼠标就是我的了 1.Superman: 小姐姐的题解:直接用set模拟即可emmmm 里面有很多指针啊,乱七八糟的,不会qwq,先看看我的大模拟吧: #include& ...

  3. 洛谷 P2398 GCD SUM 题解

    题面 挺有意思的. 设f[i]表示gcd(i,j)=i的个数,g[i]表示k|gcd(i,j)的个数; g[i]=(n/i)*(n/i); g[i]=f[i]+f[2i]+f[3i]+...; 所以f ...

  4. Luogu P2612 [ZJOI2012]波浪

    题目 我们考虑从\(1\)到\(n\)把每个数放到序列里面去,以消掉绝对值. 在最后的序列中,如果\(i\)的某一边是序列的边界,那么\(i\)会产生\(0\)的贡献.如果\(i\)的某一边是一个比\ ...

  5. C语言 --- 函数指针(初级)

    1.函数指针:指向函数的指针变量.                 函数在内存中也是有地址的,函数名代表函数的内存地址.    例子:函数:int sum(int a,int b);      int ...

  6. GitHub 上有哪些优秀的 Python 爬虫项目?

    目录 GitHub 上有哪些优秀的 Python 爬虫项目? 大型爬虫项目: 实用型爬虫项目: 其它有趣的Python爬虫小项目: GitHub 上有哪些优秀的 Python 爬虫项目? 大型爬虫项目 ...

  7. 阿里云CentOs服务器 安装与配置mysql数据库

    阿里云CentOs服务器 安装与配置mysql数据库 以上为Linux安装mysql数据库 Linux 安装mysql 数据库 一下为mysql 安装教程 Using username "r ...

  8. js方法的封装

    封装是为了更好的调用,当我们很多页面都需要同一种方法的时候,为了避免每个页面都需要进行重写方法,增加工作量,这个时候就需要我们对部分公共的方法进行封装,这样便于更好的进行调用 我在写接口的时候用到了 ...

  9. Tomcat 使用jms 采集需要配置

    Tomcat 使用JMS采集配置需要加入以后配置参数,本示例是在 eclipse 下启动tomcat中的配置. 在tomcat Arguments选择卡的VM arguments中加入: -Dcom. ...

  10. C++有静态成员变量的类继承

    声明和定义 1.变量的定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值.在一个程序中,变量有且仅有一个定义. 2.变量的声明 用于向程序表明变量的类型和名字.程序中变量可以声明多次,但只 ...