python csv文件读写(二)

一、字典格式数据写入

(1) 使用writerow写入数据

import csv

datas = [
    {'name':'小明','age':18,'phone':13100},
    {'name':'小华','age':22,'phone':13101},
    {'name':'小五','age':23,'phone':13102},
    {'name':'小李','age':26,'phone':13103},
    ]
with open('demo2.csv', mode='w', encoding='utf-8', newline='') as fw:
    writer = csv.DictWriter(fw,fieldnames=['name','age','phone'])
    writer.writeheader()   # 将表头写上
    for data in datas:
        writer.writerow(data)

(2) 使用writerows写入数据

import csv

datas = [
    {'name':'小明','age':18,'phone':13100},
    {'name':'小华','age':22,'phone':13101},
    {'name':'小五','age':23,'phone':13102},
    {'name':'小李','age':26,'phone':13103},
    ]
with open('demo2.csv', mode='w', encoding='utf-8', newline='') as fw:
    writer = csv.DictWriter(fw,fieldnames=['name','age','phone'])
    writer.writeheader()
    writer.writerows(datas)

输出结果(用notepad++打开显示内容)
在这里插入图片描述
:这里若未写writer.writeheader()这行代码,写入的结果将无表头字段。

二、读取csv文件(字典格式数据)

(1) 读取每一行数据

with open('demo.csv',mode='r',encoding='utf-8') as fr:
    reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
    for line in reader:
        print(line)   

输出结果

OrderedDict([('name', '小明'), ('age', '18'), ('phone', '13100')])
OrderedDict([('name', '小华'), ('age', '22'), ('phone', '13101')])
OrderedDict([('name', '小五'), ('age', '23'), ('phone', '13102')])
OrderedDict([('name', '小李'), ('age', '16'), ('phone', '13103')])

(2) 读取某列数据

with open('demo.csv',mode='r',encoding='utf-8') as fr:
    reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
    for line in reader:
        print(line['name'])

输出结果

小明
小华
小五
小李

还可以这样写法:

with open('demo.csv',mode='r',encoding='utf-8') as fr:
    reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
    for line in reader:
        print(line.get('name'))

输出结果

小明
小华
小五
小李

(2) 读取所有的值(除去表头)

with open('demo.csv',mode='r',encoding='utf-8') as fr:
    reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
    for line in reader:
        for value in line.values():
            print(value,end=' ')

输出结果

小明 18 13100 小华 22 13101 小五 23 13102 小李 16 13103 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值