python中csv模块读写文件

一、csv模块读文件

1. csv.reader–可迭代对象

通过索引获取文档内容

def csv_read():
    file = open('./txt/names.csv','r')
    reader = csv.reader(file)
    head = next(reader)
    print(head)
    for line in reader:
        print('{}:{} -- {}:{}'.format(head[0],line[0],head[1],line[1]))

输出

['first_name', 'last_name']
first_name:Wonderful -- last_name:Spam
first_name:Lovely -- last_name:Spam
first_name:Baked -- last_name:Beans
2. csv.reader的namedtuple
def csv_read_nametuple():
    '''
    namedtuple 可通过属性访问
    '''
    file = open('./txt/names.csv', 'r')
    reader = csv.reader(file)
    head = next(reader)
    print(head)
    # 构建一个namedtuple的模板
    from collections import namedtuple
    Row = namedtuple('Rom',head)
    print(Row)
    for r in reader:
        row = Row(*r)# 读取的csv中每一行的内容,实例化Row模板
        # 通过属性访问
        print('{}:{} -- {}:{}'.format(head[0],row.first_name,head[1],row.last_name))

输出同上

3. csv.DictReader以字典的形式读取
  • 获取表头 reader.fieldnames
def csv_read_dict():
    file = open('./txt/names.csv', 'r')
    reader = csv.DictReader(file)
    fieldname = reader.fieldnames# 获取表头
    for r in reader:
        print('{}:{} -- {}:{}'.format(fieldname[0], r['first_name'],
         fieldname[1], r['last_name']))

输出同上

二、csv模块写文件

1. 单个属性写入csv.writer
import csv
def csv_write():
    fw = open('./txt/charater2number.csv','w',
              newline='',
              encoding='utf-8')
    write = csv.writer(fw)
    number = range(65, 70)
    char = list(map(chr, number))
    for i in range(len(char)):
        write.writerow([char[i],number[i]])#
if __name__ == '__main__':
    csv_write()

在这里插入图片描述
不设置newline时,默认是\n
在这里插入图片描述

3. 元组形式写入csv.Writer
def write_tuple():
    file = open('./txt/person information.csv','w',encoding='utf8',newline='')
    head = ['ID','Name','Gender']
    rows = [
        (1,'Amy','F'),
        (2,'Tommy','M'),
        (3,'Blair','F'),
    ]
    writer = csv.writer(file)
    writer.writerow(head)# 写入表头
    writer.writerows(rows) # 写入主题内容,接收列表对象
    file.close()

在这里插入图片描述

2. 字典形式写入csv.DictWriter

写入的单行writer.writerow和多行writer.writerows
writer.writeheader()# 写入文件头

import csv

def csv_write_rows():
    with open('./txt/names.csv', 'w', newline='') as csvfile:
        fieldnames = ['first_name', 'last_name']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()# 写入文件头
        # 单行写入
        # writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
        # writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
        # writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
        # 多行写入
        writer.writerows([{'first_name': 'Wonderful', 'last_name': 'Spam'},\
                          {'first_name': 'Lovely', 'last_name': 'Spam'}, \
                          {'first_name': 'Baked', 'last_name': 'Beans'}])
if __name__ == '__main__':
    csv_write_rows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值