-
2020-11-01 11:50:45
python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来。
在编写python程序的时候需要csv模块或者pandas模块,其中csv模块使不需要重新下载安装的,pandas模块需要按照对应的
python版本安装。
在python2环境下安装pandas的方式是:
sudo pip install pandas
在python3环境下安装pandas的方式是:
sudo pip3 install pandas
1、使用csv读写csv文件方法总结
读文件的时候,打开文件,调用csv.reader()读取文件;对于读取之后的文件的内容,要把这些内容输入到另一个文件中保存,可以通过遍历读取的文件的每一行,然后使用csv_write.writerow()的方式写入到指定的文件。
2、使用csv读写csv文件示例代码
#encoding:utf-8
import csv
#读取csv文件
csv_file = csv.reader(open('../../data/capital/2010-Q4-cabi-trip-history-data.csv'))
print(csv_file)
#添加newline可以避免一行之后的空格,这样需要在python3环境下运行
out = open('../../data/capital/2010-Q4','a',newline='')
csv_write = csv.writer(out,dialect='excel')
for item in csv_file:
#print item
csv_write.writerow(item)
print("write over")
上面的代码是传统的打开文件---读取文件---打开文件---关闭文件的方式进行文件读取和写入。在读取和写入的过程中分别调用了csv库的reader()和writer()
3、使用csv读写csv文件示例代码
#encoding:utf-8
import csv
#下面这种加了encoding的写法需要在python3环境下运行
csv_reader = csv.reader(open('../../data/capital/2011-Q1-cabi-trip-history-data.csv',encoding='utf-8'))
out = open('../../data/capital/a0','w',newline='')
csv_writer = csv.writer(out,dialect='excel')
for row in csv_reader:
#输出的每一行是一个list,list中的每一个元素转换成了string类型
print(row)
csv_writer.writerow(row)
示例代码2的读写方式与示例代码1的方式基本相同,不同的是在示例代码2中打开文件的时候指定了打开时的编码方式,对于输出文件的打开方式也与示例代码1的方式有少量的差别,把写入方式右'a'改成了'w
4、使用csv读写csv文件示例代码
#encoding:utf-8
import csv
#读取csv文件方式1
csvFile = open('../../data/capital/2011-Q3-cabi-trip-history-data.csv','r')
reader = csv.reader(csvFile)
data = []
for item in reader:
#print(item)
data.append(item)
#print(data)
csvFile.close()
#读取csv文件方式2
with open("../../data/capital/2011-Q3-cabi-trip-history-data.csv",'r') as csvFile:
#读取csv文件,返回的是迭代类型
reader2 = csv.reader(csvFile)
for item2 in reader2:
print(item2)
csvFile.close()
#从列表写入csv文件
#设置newline,否则两行之间会空一行
csvFile2 = open('../../data/capital/0001.csv','w',newline='')
writer = csv.writer(csvFile2)
m = len(data)
for i in range(m):
writer.writerow(data[i])
csvFile2.close()
#从字典写入csv文件
dic = {'张三':123,'李四':456,'王二娃':789}
csvFile3 = open('../../data/capital/0001.csv','w',newline='')
writer2 = csv.writer(csvFile3)
for key in dic:
print(key)
#writer2.writerow([key,dic[key]])
csvFile3.close()
在上面的代码中提出了两种不同的打开csv文件和写入csv文件的方式。其中第一种打开方式与前面两种非常相似,不同之处是在这种方式中,打开文件的时候加入了读取方式,而前面两个示例代码没有加。另一种读取方式是采用python中独有的命名方式对打开文件命名,其他部分相似。在这个示例中,对列表和字典写入csv文件做了区分,分别提供了列表和字典写入csv文件的示例代码。
5、使用csv读写csv文件示例代码
#encoding:utf-8
'''
import pandas as pd
#任意的多组列表
a = [1,2,3]
b = [4,5,6]
#字典中的key值即为csv中的列名
dataFrame = pd.DataFrame({'a_name':a,'b_name':b})
#将DataFrame存储为csv,index表示是否显示行名,default=True
dataFrame.to_csv('0001.csv',index=False,sep='')
#pandas提供的读取csv的方法
data = pd.read_csv('test.csv')
'''
#===================================
#另一种方法:用csv包,一行一行写入
import csv
#python2可以用file替代open
with open('test.csv','w') as csvFile:
writer = csv.writer(csvFile)
#先写columns_name
writer.writerow(["index","a_name","b_name"])
#写入多行用writerows
writer.writerows([[1,2,3],[0,1,2],[4,5,6]])
#用reder读取csv文件
with open('test.csv','r') as csvFile:
reader = csv.reader(csvFile)
for line in reader:
print line
这个示例代码提出了写入一行和写入多行的实现方式。
6、使用csv读写csv文件示例代码
#encoding:utf-8
import csv
with open('test.csv') as csvFile:
#readcsv = csv.reader(csvFile,delimiter='')
readcsv = csv.reader(csvFile)
#
rows= [row for row in readcsv]
for row in readcsv:
rows= [row for row in reader]
#print(row)#打印一行
print(row[0])#打印一行中的某个cell
print(row[0],row[1])#打印一行中的某个cell
print('=================')
with open('test.csv') as csvFile:
readCSV = csv.reader(csvFile)
cols1 = []
cols2 = []
cols3 = []
for row in readCSV:
col1 = row[0]
col2 = row[1]
col3 = row[2]
cols1.append(col1)
cols2.append(col2)
cols3.append(col3)
print cols1
print cols2
print cols3
上面的代码示例提出了读取所有行的新写法,提出了读取某个cell和某一列的方式。
7、使用csv读写csv文件示例代码
#encoding:utf-8
import csv
#第一种方法:使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容.eg:下面的代码可以读取csv的全部内容,以行为单位
with open('test.csv','rb') as csvFile:
reader = csv.reader(csvFile)
rows = [row for row in reader]
print rows
print('===========')
#提取其中某一列可以使用下面的方法
with open('test.csv','rb') as csvFile:
reader = csv.reader(csvFile)
column = [row[1] for row in reader]
print column
print('======第二种方法======')
#第二种方法:使用DictReader,和reader函数类似,接收可迭代的对象,能返回一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题.用下面的代码可以看到DictReader的结构:
with open('test.csv','rb') as csvFile:
reader = csv.DictReader(csvFile)
column = [row for row in reader]
print(column)
#使用CictReader读取csv的某一列,这样可以按照列的标题查询
with open('test.csv','rb') as csvFile:
reader = csv.DictReader(csvFile)
column = [row['a_name'] for row in reader]
print column
上面的代码提出了读取整行和整列的新方式。另外提出了一种使用DictReader的方式按照列名读取的方式。
8、使用csv读写csv文件示例代码
#encoding:utf-8
import csv
with open('test.csv','rb') as csvFile:
reader = csv.reader(csvFile)
for row in reader:
print row
#向csv文件中写内容,这样写会把内容全部写到一个cell中
with open('test1.csv','wb') as csvFile:
writer = csv.writer(csvFile,delimiter=' ',quotechar='|',quoting=csv.QUOTE_MINIMAL)
writer.writerow(['a','4','5','6'])
writer.writerow(['b','1','2','3'])
writer.writerow(['c','9','8','7'])
writer.writerow(['d','8','3','1'])
#向csv文件中写内容,下面的写法最终可以把每一列的内容放在一个cell中
with open('test2.csv','wb') as csvFile:
writer = csv.writer(csvFile,dialect='excel')
writer.writerow(['a','4','5','6'])
writer.writerow(['b','1','2','3'])
writer.writerow(['c','9','8','7'])
writer.writerow(['d','8','3','1'])
上面的代码提出了可以把列表中的数据放入到不同cell的实现方式。
更多相关内容 -
python读写csv文件方法详细总结
2021-01-01 09:40:02python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来。 在编写python程序的时候需要csv模块或者pandas模块,其中csv模块使不需要重新下载安装的,pandas... -
使用python读取csv文件快速插入数据库的实例
2020-09-20 08:34:04今天小编就为大家分享一篇使用python读取csv文件快速插入数据库的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python读取csv文件指定行的2种方法详解
2020-09-17 23:04:41主要介绍了python读取csv文件指定行的方法详解,需要的朋友可以参考下 -
Python读取csv文件分隔符设置方法
2020-09-19 18:01:38今天小编就为大家分享一篇Python读取csv文件分隔符设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python读取csv文件并把文件放入一个list中的实例讲解
2020-12-23 21:25:32读取CSV文件,把csv文件放在一份list中。 ''' import csv class readCSV(object): def __init__(self,path="Demo.csv"): #创建一个属性用来保存要操作CSV的文件 self.path=path try: #打开一个csv文件,并赋予读... -
Python读取CSV文件转成字典存储
2018-09-21 23:33:38使用python读取csv文件,转成字典存储,支持int,str,float等 -
python读取csv文件并转为list的每步结果图.html
2020-02-02 18:22:44python读取csv文件并转为list的结果图,是python读取csv文件并转为list的详细每步的结果。 -
Python 读取csv文件时数字变成科学计数法(含有e)
2021-01-20 12:08:26读取csv时遇到一个长数字(比较...https://www.jb51.net/article/164692.htm (见文章【 4、使用csv读写csv文件示例代码】) import csv csvFile = open('5000 Sales Records.csv','r') reader = csv.reader(csvFil -
python读写csv文件实例代码
2021-01-20 05:41:36Python读取与写入CSV文件需要导入Python自带的CSV模块,然后通过CSV模块中的函数csv.reader()与csv.writer()来进行CSV文件的读取与写入。 写入CSV文件 import csv # 需要import csv的文件包 out=open(aa.csv,'wb') ... -
Python 读取CSV文件
2021-10-25 16:58:57按行读取csv文件 (1)reader函数 import csv with open('test.csv','rt') as csvfile: #此csv文件是一个文本文件,并非二进制文件,如是二进制文件,'rt'改为'rb' reader = csv.reader(csvfile) rows = [row ...csv文件如下所示:
按行读取csv文件
(1)reader函数
import csv with open('test.csv','rt') as csvfile: #此csv文件是一个文本文件,并非二进制文件,如是二进制文件,'rt'改为'rb' reader = csv.reader(csvfile) rows = [row for row in reader] print (rows)
结果:
如果想读取特定的行:
import csv with open('test.csv','rt') as csvfile: reader = csv.reader(csvfile) for i,rows in enumerate(reader): if i == 2: row = rows print (row)
结果:
['3', '4', '5', '3', '9']
(2)DictReader
csv文件:
和reader函数类似,接收一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DictReader的结构:
import csv with open('test.csv','rt') as csvfile: reader = csv.DictReader(csvfile) rows = [row for row in reader] print (rows)
结果:
[OrderedDict([('实验', '8'), ('观测', '2'), ('模拟', '7'), ('误差', '6'), ('总计', '8')]),
OrderedDict([('实验', '3'), ('观测', '4'), ('模拟', '5'), ('误差', '3'), ('总计', '9')]),
OrderedDict([('实验', '0'), ('观测', '0'), ('模拟', '0'), ('误差', '0'), ('总计', '0')]),
OrderedDict([('实验', '0'), ('观测', '7'), ('模拟', '8'), ('误差', '9'), ('总计', '9')]),
OrderedDict([('实验', '0'), ('观测', '0'), ('模拟', '0'), ('误差', '0'), ('总计', '0')]),
OrderedDict([('实验', '0'), ('观测', '0'), ('模拟', '0'), ('误差', '0'), ('总计', '0')]),
OrderedDict([('实验', '0'), ('观测', '0'), ('模拟', '0'), ('误差', '0'), ('总计', '0')])]
如果我们想用DictReader读取csv的某一列,就可以用列的标题查询:
import csv with open('test.csv','rt') as csvfile: reader = csv.DictReader(csvfile) for row in reader: if row['误差']=='9': print(row)
结果:
OrderedDict([('实验', '0'), ('观测', '7'), ('模拟', '8'), ('误差', '9'), ('总计', '9')])
可见,DictReader很适合读取csv的的行(记录)。
-
python读写csv文件
2021-03-17 02:55:00csv释义逗号分隔值(Comma-Separated Values,CSV...CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完...csv释义
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本(NOTE)来开启,再则先另存新档后用EXCEL开启,也是方法之一。
读取csv文件
reader(filename),可以使用reader()方法来创建一个对象从csv文件中读取数据。
官方文档:csv.reader(csvfile, dialect='excel', **fmtparams) //csvfile是任何可以迭代的对象(如果是文件对象则用newline=''来打开它),dialect翻译为方言用于定制解析器来解析数据,**fmtparams为解析器参数
读文件时,输入数据的每一行都会解析,并返回一个列表
创建一个csv文件写入如下数据,python读取:
>>> with open('test.csv','r',newline='') as csvfile:
... reader=csv.reader(csvfile)>>> for i inreader:
...print(i)
...
['name', 'tel', 'address', 'age']
['zhang', '15111111111', 'beijing', '33']
['li', '13822222222', 'wuhan', '28']
['liu', '15933333333', 'hainan', '25']
写csv文件
writer(filename),使用writer方法来写数据
csv.writer(csvfile, dialect='excel', **fmtparams) //参数与读完全基本相同
写一段代码来测试
importcsv
with open('test1.csv','w',newline='') as f:
writer=csv.writer(f)
writer.writerow(('name', 'tel', 'address', 'age'))
writer.writerow(('zhang', 15111111111, 'beijing', 33))
writer.writerow(('li', 13822222222, 'wuhan', 28))
writer.writerow(('liu', 15933333333, 'hainan', 25))
with open('test1.csv','r',newline='') as f:
reader=csv.reader(f)for i inreader:print(i)
结果:
['name', 'tel', 'address', 'age']
['zhang', '15111111111', 'beijing', '33']
['li', '13822222222', 'wuhan', '28']
['liu', '15933333333', 'hainan', '25']
发现结果与输入不同,默认引号模式的原因
写文件时可用quoting来设置引号模式
默认为:writer = csv.writer(f,quoting=csv.QUOTE_NONNUMERIC) //非数字加引号
可改为:
QUOTE_ALL:所有字段加引号
QUOTE_MINIMAL:特殊字段加引号
QUOTE_NONE:都不加引号
方言
用于定制解析器,无需将各个参数单独传入阅读器和书写器,可以组成一起构成一个方言对象
标准库包括两个方言:excel和excel-tabs,默认为excel
csv方言参数:
属性
默认值
含义
delimiter
,
字段分隔符
doublequote
True
控制quotechar实例是否成对
escapechar
None
指示一个转义序列
lineterminator
\r\n
书写器使用这个结束一行
quotechar
"
用来包围含特殊字符的字段
quoting
QUOTE_MINIMAL
控制引号行为
skipinitialspace
False
忽略字符定界符前的空白符
将”行“转换为字典
DictReader和DictWriter类将行转化为字典而非行
官方文档:class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
参数说明:
fieldnames:字典的键,默认为第一行数据
restkey:若所读行字段多余给出的键个数,剩余键由restkey给出
restkey:若所读行字段少于给出的键个数,剩余值由restval给出
例如上述test1.csv文件
with open('test1.csv','r',newline='') as f:
reader=csv.DictReader(f)for i inreader:print(i)
结果:
{'address': 'beijing', 'name': 'zhang', 'age': '33', 'tel': '15111111111'}
{'address': 'wuhan', 'name': 'li', 'age': '28', 'tel': '13822222222'}
{'address': 'hainan', 'name': 'liu', 'age': '25', 'tel': '15933333333'}
DictWriter类似DictReader,提供一个列表作为键
writer = csv.DictWriter(f,list)
官方文档:class csv.Dictwriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
更多详细解释可访问python标准库
-
Python读取CSV文件
2020-11-29 18:12:21读取CSV文件Iterable:是一个行迭代器Dialect:默认的读取方式是以excel的形式去读下面是准备的csv格式的文档,我们来用python读取读取操作:读取结果如下:['class', 'name', 'sex', 'height', 'year']['1', '...1.CSV简介
格式,用以存储表格数据,包括数字或者字符,下面主要介绍csv文件读取和写入两种方式
2. 读取CSV文件
Iterable:是一个行迭代器
Dialect:默认的读取方式是以excel的形式去读
下面是准备的csv格式的文档,我们来用python读取
读取操作:
读取结果如下:
['class', 'name', 'sex', 'height', 'year']
['1', 'wangtao', 'male', '168', '23']
['2', 'lixiang', 'female', '162', '22']
['3', 'zuxiaobin', 'female', '163', '21']
['4', 'xiaoer', 'male', '158', '21']
3.写入csv文件-方式一(列表、元组类型)
写入结果:
可以看到写入结果中含有空白行,为了去掉空白的行,我们需要添加代码newline=''即可解决
file = open("write_csv1.csv","w",encoding="utf-8",newline='')
另外这里需要解释两个方法,writerow()和writerows(),前者是写入单行内容,后者是同时写入多行内容,可以写入列表或者元组对象。
4.写入csv文件-方式二(字典类型)
写入结果:
参数解释:DictWriter类接收一个文件对象和序列文件,文件对象代表csv文件对象,序列文件列表代表表头所组成的列,同样该类下实现了单行写入writerow()和多行写入writerows()的方法
5.读写模式:
可分为写模式和追加模式,按照python文件读取的方式,”w”(写),”r”(读),”a”(追加)
-
python读写csv文件的方法
2020-09-18 20:33:08主要介绍了python读写csv文件的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下 -
Python读取csv文件实例解析
2020-09-18 05:28:32主要介绍了Python读取csv文件实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
python读取csv文件
2022-01-06 20:04:11python中读取csv文件的方法是用pandas.read_csv('file.csv'),这个方法读取csv文件,然后得到一个dataframe对象,即read_csv()函数的作用在于:将一个csv文件转化为dataFrame对象(pandas中的一种数据组织形式) ... -
python 读取.csv文件数据到数组(矩阵)的实例讲解
2020-09-20 09:10:08今天小编就为大家分享一篇python 读取.csv文件数据到数组(矩阵)的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
使用Python读写csv文件的三种方法
2021-02-04 14:08:51Python读写csv文件觉得有用的话,欢迎一起讨论相互学习~Follow Me前言逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。... -
python读取csv文件示例(python操作csv)
2020-12-24 10:32:55复制代码 代码如下:import csvfor line in open(“test.csv”):name,age,birthday = line.split(“,”)name = name....csv文件 复制代码 代码如下:alice, 22, 1992/03/05bob, 33, 1981/11/21cart, 40, 1974/07/13 -
python读取几个G的csv文件方法
2020-12-25 09:20:04以上这篇python读取几个G的csv文件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python读csv文件时指定行为表头或无表头的方法Python把对应格 -
python读写CSV文件
2021-01-24 10:13:36python读/写CSV文件 1.python读csv文件 读取csv文件,首先导入CSV模块: import csv 由于CSV文件本质上是一个文本文件,所以要先以文本文件的形式打开,再将文件对象传递给CSV模块: with open(filepath,"r",encoding... -
cnn2自编码器_python读取csv文件_读取csv文件_自编码_自编码器
2021-09-11 15:39:37python读取csv 文件,提供了神经网络的程序,以及自编码器