python如何用csv库读入到list并写入到新的csv

本文详细介绍了CSV文件的定义及其在Python中的读写操作。通过csv模块,展示了如何读取和写入数据,包括使用reader读取行数据,用writer写入数据到CSV或Excel。同时,解释了文件打开模式如'r'、'w'、'a'等的含义,并讨论了newline参数在读写过程中的作用。文章还提醒注意在使用xlwt模块时可能遇到的列数限制问题。
摘要由CSDN通过智能技术生成

提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是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所示。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值