04-数据存储(02 csv文件的读取写入)

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值