这个是csv的科普贴。
其中用到的只是都是非常基础。但是由于新手,又很容易搞混的地方。
一脚一脚坑才出来的-,-....希望能帮到刚入门的童鞋。
1. 基本读写操作
>>>"为什么我写入后每个输出都多了空行?"
这个时候可以使用:
with open(csvfilename, "w", newline='') as fout:
2. 写入行还是列
从下面的两个例子可以看出, writerow就是以行写入的。如果你是列表来写入,每个值都是一行的话。那么只需要加个for循环来每个写入就可以了。
import csv
data=['a','b','c']
with open('0706.csv','w',newline='') as f:
writer=csv.writer(f)
writer.writerow(data)
'''
a,b,c (one row, three columns)
'''
import csv
data=['a','b','c']
with open('0706.csv','w',newline='') as f:
writer=csv.writer(f)
for i in data:
writer.writerow(i)
'''
a, (one column, three row)
b,
c
'''
3. 写入的数据如何都“挤在”一个单元格里面。
刚开始会遇到这样的问题,一个单元格只有一个字母。例如“Yes”就分成了三列。而不是挤在一列里面。这里面需要注意:
csv. writerow([data])
而不是
csv.writerow(data)
final=list(set(ee))
for i in range(len(final)):
data=final[i]
writer.writerow([data])
final是一个list,然后data是一个list当中的元素。例如list=[青少年学习,少年学习,幼儿学习],final[0]就是青少年学习。
如果想“挤在一个单元格”不想分开,那么就要用上面的方法。
解释如下:
writerow expects an iterable so iterating over list. row is a string which writer iterates over and splits into single chars when writing to the file.
4. 在原有的csv中加入新行。
两种方式:
1) with open(csvfilename, a+) as fou, open(csvfilename,r) as fin。这种方式,新加的数据只能append到最后。而不是加新列中。
2) 生成新的file然后利用os.remove跟os.rename删掉旧文件跟重命名文件。
暂时先想到这么多。
Thx。