python操作csv文件

一、关于csv文件的介绍

CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:

  • 值没有类型,所有值都是字符串
  • 不能指定字体颜色等样式
  • 不能指定单元格的宽高,不能合并单元格
  • 没有多个工作表
  • 不能嵌入图像图表

打开方式:

  • 直接用Excel打开,看起来是表格
  • 用记事本或者编辑器打开就是一坨用,分开的字符

二、关于使用python读取csv文件

  • 1、导包(不需要安装)

    import csv
    
  • 2、全部读取出来

    filename = 'test.csv'
    
    with open(filename) as f:
        reader = csv.reader(f)
        # 列表的方式
        print(list(reader))
    
  • 3、逐行读取数据

    import csv
    
    with open('test.csv') as f:
        reader = csv.reader(f)
        # 读取一行,下面的reader中已经没有该行了
        header_row = next(reader)
        for row in reader:
            print(reader.line_num, row)
    

三、写入文件

  • 1、单行写入文件

    import csv
    
    datas = [
        ['name', 'age'],
        ['张三', 20],
        ['李四', 30]
    ]
    
    with open('test1.csv', 'w', newline='', encoding='utf8') as f:
        writer = csv.writer(f)
        for row in datas:
            writer.writerow(row)
    
  • 2、结果显示

    name,age
    张三,20
    李四,30
    
  • 3、多行写入

    import csv
    
    datas = [
        ['name', 'age'],
        ['张三', 20],
        ['李四', 30],
        ['王五', 18]
    ]
    
    with open('test2.csv', 'w', newline='', encoding='utf8') as f:
        writer = csv.writer(f)
        writer.writerows(datas)
    

四、使用DictReaderDictWriter对象来操作

使用DictReader可以像python中字典一样的操作数据

  • 1、使用DictReader读取数据

    import csv
    
    with open('test.csv') as f:
        reader = csv.DictReader(f)
        # 先读取标题
        next(reader)
        for row in reader:
            print(row['mobile'])
    
  • 2、写入文件

    import csv
    
    headers = ['name', 'age']
    
    datas = [
        {'name': '张三', 'age': 20},
        {'name': '李四', 'age': 30},
        {'name': '王五', 'age': 24}
    ]
    
    with open('test3.csv', 'w', newline='', encoding='utf8') as f:
        writer = csv.DictWriter(f, headers)
        # 写入头部
        writer.writeheader()
        # 一次性全部写入
        writer.writerows(datas)
    

results matching ""

    No results matching ""