1、CSV文件简介
2、读取CSV文件的两种方式
使用数据:test.csv,内容如下:
产品编号,产品名称,品牌,类别,采购价格,零售价格
1001,小米手机,小米,手机,1800,2000
1002,小米电脑,小米,电脑,4700,5200
1003,小米平板,小米,平板,1300,1500
2001,苹果手机,苹果,手机,6000,8000
2002,苹果电脑,苹果,电脑,8000,10000
2003,苹果平板,苹果,平板,2200,3000
3001,三星手机,三星,手机,3600,4200
3002,三星电脑,三星,电脑,3500,4000
3003,三星平板,三星,平板,1700,2000
读取csv的两种方法:
# -*- coding: utf-8 -*-
# 读取csv的两种方法
# 1) 方式一、读取csv
import csv
with open('test.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader) # 第一行标题
for x in reader:
print(x)
# 2) 方式二、通过标题来获取某一列数据,用DictReader
import csv
with open('test.csv','r') as fp:
reader = csv.DictReader(fp)
for x in reader:
print(x['产品名称'])
练习:
# 3)
import csv
with open('test.csv','r') as fp:
# reader是一个迭代器
reader = csv.reader(fp)
next(reader) # next函数:为了不读取第一行标题
for x in reader:
name = x[3]
volumn = x[-1]
print({'name':name, 'volumn':volumn})
# 4)
import csv
with open('test.csv','r') as fp:
# 使用DictReader创建reader对象
# 不会包含标题那行的数据
# reader是一个迭代器,遍历这个迭代器,返回的是一个字典
reader = csv.DictReader(fp)
for x in reader:
value = {'产品名称': x['产品名称'], '零售价格': x['零售价格']}
print(value)
3、写入CSV文件的两种方式
# -*- coding: utf-8 -*-
# 5 写入到csv的两种方法
# 1) 方式一:对元组
import csv
headers = ['username','age','height']
values = [
('张三',18,180),
('李四',19,190),
('王五',20,160)
]
with open('classroom.csv','w',encoding='utf-8',newline='') as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(values)
'''
注意:
1、有中文时需要指定encoding
2、newline:默认'\n',即读入一行加一个换行符;为防止空行出现,需要指定为''(空)
'''
# 2) 方式二:对字典
headers = ['username','age','height']
values = [
{'username':'张三', 'age':18, 'height':180},
{'username':'李四', 'age':19, 'height':190},
{'username':'王五', 'age':20, 'height':160}
]
with open('classroom.csv','w',encoding='utf-8',newline='') as fp:
writer = csv.DictWriter(fp, headers)
# 写入表头的数据时,需要调用writeheader方法
writer.writeheader()
writer.writerows(values)