[python] csv 基本操作总结

这个是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。

你可能感兴趣的:(python数据分析)