提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是csv文件?
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。如何还想了解更多可以进入百度百科看看。
二、使用步骤
在运行代码之前,必须手动关闭 CSV 文件。
1.如何读入数据
以今年泰迪杯的数据为为例:用with open() as f:进行读写操作
csv.reader()返回一个reader对象,利用该对象遍历csv文件中的行。
从csv文件中读取的每一行都作为字符串列表返回。
还可以用next(reader) 读取首行,如果继续用next(reader)读取第二行
import csv
filename='F:\BaiduNetdiskDownload\data\附件2\图片虫子位置详情表.csv'
with open(filename) as f:
reader=csv.reader(f)
for row in reader:
print(row)
2.如何写入数据
1.用csv模块来写入到csv中
打开文件的参数要改成’a’,追加写入到csv文件中
import csv
file=open('F:\BaiduNetdiskDownload\data\附件2\虫子汇总.csv', 'a', newline='')
with file as csvfile:
writer = csv.writer(csvfile)
writer.writerow(row)#这里的row是上一步读入数据代码的list
csvfile.close()
2.用xwlt模块写入到excel中
import xlwt
f = xlwt.Workbook()#还可以在括号中加入编码格式encoding = 'utf-8'
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)#设置excel表名
r=0
c=0
for row in reader:
print(row)
for c in range(len(row)):
sheet1.write(c, r, row[c])
r = r + 1
f.save('F:\BaiduNetdiskDownload\data\附件2\虫子汇总.xls')
想要了解更多excel的xlrd和xlwt模块,点击进入即可。还是建议用第一中方法,第二中容易报错“ValueError: column index (256) not an int in range(256)”。因为pandas内部调用了xlwt模块,而该模块最大列只支持255列,所以在保存数据时,一旦超过这个值就会报错,然后网上的各种资料都表示要改用xlsxwriter模块,但是具体要怎么用这个模块?貌似如果用这种方法就不能用dataframe的数据格式了
写入文件参数
r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。
rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+: 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
csv标准库中的writerow在写入文件时会加入'\r\n'作为换行符,if newline is '',换行符不会被转化而是直接输出,如case 1所示。
当写文件时newline='',程序写入'a\r\nb\r\n';读取文件时newline=None,universal newlines mode工作,换行符'\r\n'被翻译为'\n',如case 2所示。
当写文件时newline=None,csv先是将'a\r\nb\r\n'写入内存,再写入文件时,universal newlines mode工作,换行符'\n'被翻译为'\r\n',最终结果如case 3所示。
当写文件时newline=None,csv先是将'a\r\nb\r\n'写入内存,再写入文件时,universal newlines mode工作,换行符'\n'被翻译为'\r\n';读取文件时newline=None,universal newlines mode工作,换行符'\r'和'\r\n'被翻译为'\n',显示为'a\n\nb\n\n',如case 4所示。