天天看点

python-csv文件读写csv文件读写

csv文件读写

测试环境:py3+win10,不同环境可能会有些许差异。

这里主要介绍csv模块主要方法

  • 导入csv模块
import csv
           
  • 逐条写入:
headers = ['name','age','height']
values = [['张三',18,166],['李四',20,188],['王五',17,175]]
#csv格式,编码要用uft_8_sig,用uft_8不行,newline默认写入后添加'\n'换行,所以指定为空
with open('d:/Desktop/file.csv','w',encoding='utf_8_sig',newline='') as f:
    writer = csv.writer(f)
    '''写入标题'''
    writer.writerow(headers)
    ''''传入列表,使用writerows可以一次性写入多条数据,使用writerow一次只能写入一行数据。'''
    writer.writerows(values)
print('Done!')
           
  • 以字典写入:
headers = ['name','age','height']
values = [{'name':'张三','age':20,'height':188},{'name':'李四','age':22,'height':175}]
with open('d:/Desktop/dic_file.csv','w',encoding='utf_8_sig',newline='') as f:
    writer = csv.DictWriter(f,headers)
    '''写入表头'''
    writer.writeheader()
    '''同样的,writerows一次性写入多行。writerow一次只能写入一行'''
    writer.writerows(values)
print('Done!')
           
  • 直接写入字符串:

    不需要借助csv模块,直接将字符串写入到csv文件中。

headers = ['name','age','height']
values = [['张三',18,166],['李四',20,188],['王五',17,175]]
with open('d:/桌面/dic_file.csv','w',encoding='utf_8_sig',newline='') as f:
	'需要注意的是,写入一条数据后加上‘\n’换行符;数值不能用join连接起来,需要转化为字符串。'
	f.write(','.join([str(x) for x in headers]) + '\n')
	for value in values:
		f.write(','.join([str(x) for x in value]) + '\n')
print('写入完毕')
           
  • 逐行读取:
f = open('ss.csv')
'''返回reader迭代器'''
reader = csv.reader(f)	
'''使用next方法,类似skip跳过第一行'''
next(reader)	
for lin in reader:
	print(line)
           
  • 以字典读取:
with open('file.csv','r') as f:
	'''
	使用DictReader创建的reader对象不会包含标题那行数据,标题默认为字典的key
	reader是一个迭代器,遍历这个迭代器,返回来的是一个字典。
	'''
	reader = csv.DictReader(f)
	for x in reader:
		print(x)
           

当然,我们也可以使用pandas模块中的read_csv方法读取csv文件,to_csv方法导出文件。详情请转楼:

pandas文件读取、导出——点我