Python csv模块简单使用

前言
csv文件数据的典型特征是以逗号为分隔符(注意是英文逗号’,’)。这里简单介绍利用python的csv库对csv文件进行读写,主要分为列表和字典的形式。官方介绍传送地址:https://docs.python.org/zh-cn/3/library/csv.html

针对有列标题的csv文件,建议使用DictReader/DictWriter进行读写。

1、DictReader
a.读某一列:

def read_csv_col(file_path, label):
    '''
    读取csv文件的某一列数据,csv文件的第一行为列名
    :param file_path: 文件路径
    :param label: 某一列的列名(第一行)
    :return: 指定列的所有数据(列表形式)
    '''
    col = list()
    with open(file_path,encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            cell = row[label]
            col.append(cell)
    return col

if __name__ == '__main__':
    file_path='./datas/test.csv'
    results=read_csv_col(file_path,'姓名')
    print(results)

测试文件:
在这里插入图片描述
控制台输出结果:
在这里插入图片描述
b.读整个文件内容:

def read_csv_dict(file_path):
    '''
    读取csv文件的所有,csv文件的第一行为列标题
    :param file_path: 文件路径
    :return: 所有行的数据(每一行为字典,字典的key为列标题)
    '''
    rows= list()
    with open(file_path,encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            new_row=dict()
            for label in row:
                new_row[label]=row[label]
            rows.append(new_row)
    return rows

if __name__ == '__main__':
    file_path='./datas/test.csv'
    results=read_csv_dict(file_path)
    print(results)

文件内容:
在这里插入图片描述
控制台输出
在这里插入图片描述

2、DictWriter
追加写入字典形式的数据

#writer
def write_csv_row(filename, row):
    '''
    追加写入csv文件
    :param filename: 文件路径
    :param row: 待写入的行(列表)
    :return: 无
    '''
    with open(filename, "a", newline='', encoding="utf-8") as out:
        csv_write = csv.writer(out, dialect='excel')
        csv_write.writerow(row)

if __name__ == '__main__':
    file_path='./datas/test1.csv'
    dicts=[{'name':'Nancy','age':20,'address':'China'},
           {'name':'Lili','age':18,'address':'UK'},
           {'name':'Bob','age':22,'address':'US'}]
    labels=['name','age','address']
    write_csv_dict(file_path,labels,dicts)

生成文件内容:
在这里插入图片描述
3、reader
读取所有数据,每一行的值以列表形式返回

def read_csv_all(filename, read_head_row=True):
    '''
    读取csv文件的所有行列数据
    :param filename: 文件路径
    :param read_head_row: 是否读取第一行,默认是
    :return: 所有行所有列数据(每一行为单独的列表)
    '''
    rows = list()
    with open(filename) as f:
        reader = csv.reader(f)
        if not (read_head_row):
            next(reader)
        for row in reader:
            rows.append(row)
    return rows

if __name__ == '__main__':
    file_path='./datas/test.csv'
    result=read_csv_all(file_path,False)
    print(result)

文件内容:
在这里插入图片描述
控制台输出
在这里插入图片描述
4、writer
追加写入一行

def write_csv_row(file_path, row):
    '''
    追加写入csv文件
    :param file_path: 文件路径
    :param row: 待写入的行(列表)
    :return: 无
    '''
    with open(file_path, "a", newline='', encoding="utf-8") as out:
        csv_write = csv.writer(out, dialect='excel')
        csv_write.writerow(row)
 
if __name__ == '__main__':
    file_path='./datas/test1.csv'
    row=['小明',24,'Japan']
    write_csv_row(file_path,row) 

执行结果,文件内容:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值