python--csv文件读写
最近刚注册了kaggle账号,练习了下简单的knn算法用于手写数字识别。下载的训练和测试文本都是使用csv文件存储的,所以在此重拾下csv模块。
-
csv文件
csv全称(Comma-Separated Values)是一种格式化文件,也称为字符分割值。记录之间由换行符分割,每条记录由字段组成,字段间分隔符通常是逗号或者制表符。通常,所有的记录有完全相同的字段序列。
python处理csv文件时,可以调用内置模块csv。
-
读操作
reader(csvfile, dialect='excel', **fmtparams)
参数:
csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对象,打开时需要加"b"标志参数。
dialect,编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册。
fmtparam,格式化参数,用来覆盖之前dialect对象指定的编码风格。
#coding:utf-8
import csv
def read_csv():
with open('read_csv.csv','r') as file:
lines = csv.reader(file)
for l in lines:
print l
['id', 'name']
['1', 'a']
['2', 'b']
['3', 'c']
['4', 'd']
-
写操作
writer(csvfile, dialect='excel', **fmtparams)
参数上同
def write_csv():
result = [[5,'e'],[6,'f']]
with open('write_csv.csv','wb') as file:
mywriter = csv.writer(file)
mywriter.writerows(result)
mywriter.writerow([7,'g'])
注意几点:读取的字段默认是字符类型。写文件可以选择多条记录一起,也可以单条记录,记录用序列表示。