码迷,mamicode.com
首页 > 编程语言 > 详细

21天学习python编程_csv文件操作

时间:2020-07-22 16:05:34      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:name   pre   表格   例子   csv   tab   zha   mini   reader   

主要内容:
  • 小目标:了解csv文件格式,掌握csv模块
  • 主要内容:

    什么是csv文件;
    csv模块相关操作;

如果看完这篇文章,你还是弄不明白csv文件操作;
你来找我,我保证不打你,我给你发100的大红包。

1. csv文件

  • ini文件:使用纯文本来存储表格数据,并以指定的分隔符进行分隔;
  • csv文件作用:数据文件,例如:各大数据平台的数据集
  • csv文件每一行都是一条记录,每行字段都相同
    col1,col2,col3
    v1,v2,v3
    ......

    2. csv文件基本操作:

  • csv文件操作需要使用csv模块

一个例子:

#导入csv模块
import csv
fpath = r‘test.csv‘
f = open(fpath)
#创建csv reader对象
csvf = csv.reader(f)
#通过for遍历csv文件
for row in csvf:
    print(row)
f.close()

3.csv文件写入

3.1 csv.writer写入文件

写入步骤:

  • 创建对象:csvw = csv. writer(iterable [, dialect=‘excel‘],…) #iterable一般为有写权限的文件对象
  • 写入一行:csvw.writerow(row) #row为列表或者可迭代对象
  • 写入多行:csv.writerow(rows) # rows例如:[[],[],[]...]

一个案例

#导入模块
import csv
fpath = r‘C:\Users\hyg\Desktop\test\1.csv‘
f = open(fpath, ‘w‘)
#创建csv对象
csvw = csv.writer(f)
#写入一行数据
csvw.writerow([1,2,3])
#写入多行数据
csvw.writerows([[3,4,5],[7,8,9]])
#关闭文件
f.close()

结果:

1,2,3

3,4,5

7,8,9

3.2 csv相关参数设置

csv读写可以指定下面参数:

参数 说明
delimiter 列之间分隔符,默认逗号
lineterminator 换行符,默认\r\n
quotechar 特殊字符处理方式,默认使用加双引号
quoting 写文件,控制quotechar行为
quoting参数 说明
csv.QUOTE_NONNUMERIC 非数字加引号
csv.QUOTE_ALL 所有字符加引号
csv.QUOTE_MINIMAL 特殊字段加引号
csv.QUOTE_NONE 都不加引号
  • 问题:上一个练习写入文件多一行,如何处理?
  • 指定lineterminator为\n试试
#导入模块
import csv
fpath = r‘C:\Users\hyg\Desktop\test\1.csv‘
f = open(fpath, ‘w‘)
#创建csv对象,分隔符指定为|,换行符指定为\n
csvw = csv.writer(f,delimiter=‘|‘,lineterminator=‘\n‘)
#写入一行数据
csvw.writerow([1,2,3])
#写入多行数据
csvw.writerows([[3,4,5],[7,8,9]])
#关闭文件
f.close()

结果:

1|2|3
3|4|5
7|8|9

很多同学纠结quotechar与quoting使用,我们做一个例子:

  • 每个字段使用\进行处理,
  • 指定:quoting=csv.QUOTE_ALL, quotechar=‘\‘
    #导入模块
    import csv
    fpath = r‘C:\Users\hyg\Desktop\test\1.csv‘
    f = open(fpath, ‘w‘)
    #创建csv对象,分隔符指定为|,换行符指定为\n
    csvw = csv.writer(f,delimiter=‘|‘,lineterminator=‘\n‘,quoting=csv.QUOTE_ALL, quotechar=‘\\‘)
    #写入一行数据
    csvw.writerow([‘1‘,‘|‘,3])
    #写入多行数据
    csvw.writerows([[3,4,5],[7,8,9]])
    #关闭文件
    f.close()

    结果:

    \1\|\|\|\3\3\|\4\|\5\7\|\8\|\9\

    3.3 以字典方式写入csv

    csv文件第一行一般为字段名称,
    csv.DictWriter可以以字典方式进行写入;
    主要方法:

header 1 header 2
csv.DictWriter(f,fieldnames,restval=‘‘,...) 创建DictWriter对象,fieldnames为字段列表
csvw.writeheader() 写入字段
csvw.writerow(rowdict) 写入一行,rowdict为:{k:v,k1:v...}
csvw.writerow(rowdicts) 写入多行,rowdict为:[{k:v},{k:v},...]

一个例子:

#导入模块
import csv
fpath = r‘C:\Users\hyg\Desktop\test\1.csv‘
f = open(fpath, ‘w‘)
#csv字段
fieldnames = [‘name‘,‘score‘]
#写入数据
data = [{‘name‘:‘li‘,‘score‘:80},{‘name‘:‘zhao‘,‘score‘:90}]
#创建csvw对象
csvw = csv.DictWriter(f,fieldnames=fieldnames,lineterminator=‘\n‘)
#写入字段
csvw.writeheader()
#写入数据
csvw.writerows(data)
#关闭文件
f.close()

结果:

name,score
li,80
zhao,90

以上就是csv写入主要操作

4 csv文件读取

csv读取两个方式:

  • 直接读取行:csv. DictReader (iterable [, dialect=‘excel‘],…)
  • 字典方式读取:csv. DictReader (iterable [, dialect=‘excel‘],…)
  • 字段方式读取,将第一行认为字段
  • csv文件读取方式:for或者next函数

具体操作:

#导入模块
import csv
fpath = r‘C:\Users\hyg\Desktop\test\1.csv‘
f = open(fpath, ‘r‘)
#创建csv读对象,可以指定分隔符等参数
csvr = csv.DictReader(f)
#使用next函数读取一行,格式为字典
print(next(csvr))
#使用for循环读取剩余文件内容
for row in csvr:
    print(row)
f.close()

结果:

OrderedDict([(‘name‘, ‘li‘), (‘score‘, ‘80‘)])
OrderedDict([(‘name‘, ‘zhao‘), (‘score‘, ‘90‘)])

总结:

  • csv写入方式:字典或者逐行写入
  • csv第一行一般为字段
  • csv读取使用for遍历
  • csv文件读写需要特殊设置,例如:换行符,分隔符,写入与读取要设置一致。

21天学习python编程_csv文件操作

标签:name   pre   表格   例子   csv   tab   zha   mini   reader   

原文地址:https://blog.51cto.com/huangyg/2512409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!