python之CSV模块

python之CSV模块

csv文件

0. csv文件介绍

csv文件格式是一种通用的电子表格和数据库导入导出格式。最近我调用RPC处理服务器数据时,经常需要将数据做个存档便使用了这一方便的格式。

python中有一个读写csv文件的包,直接import csv即可。利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下。

1. 写入文件

我们把需要写入的数据放到列表中,写文件时会把列表中的元素写入到csv文件中。

import csv

ll = [[1, 2, 3, 4],
      [1, 2, 3, 4],
      [5, 6, 7, 8],
      [5, 6, 7, 8]]

with open('example1.csv', 'w', newline='') as csv_file:
    # csv_write csv写入对象
    csv_write = csv.writer(csv_file,delimiter=',')
    """
    delimiter=',' 分割符,默认就是逗号
    """
    for l in ll:
        csv_write.writerow(l) # 按行写入

可能遇到的问题:直接使用这种写法会导致文件每一行后面会多一个空行。使用 newline='' 解决

使用 open 直接写入

 with open('example2.csv', 'w') as csvfile:
    """
    delimiter: 分割符
    """
    for l in ll:
        csvfile.write(",".join(map(str, l)))
        csvfile.write('\n')

注意:

当用writer写数据时, None 会被写成空字符串,浮点类型会被调用 repr() 方法转化成字符串。所以非字符串类型的数据会被 str() 成字符串存储。所以当涉及到 unicode 字符串时,可以自己手动编码后存储或者使用csv提供的 UnicodeWriter

2 读取文件

  • 通过 csv_read 对象读取数据

    import csv
    
    with open('example.csv', encoding='utf-8') as f:
        csv_reader = csv.reader(f)
        for row in csv_reader:
            print(row) # 返回一个列表,列表中的每个元素都是单元格的值
    

3. 写入字典

csv 还提供了一种类似于字典方式的写,方式如下:

class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

举个栗子:

import csv

with open('names.csv', 'w',encoding='utf-8') as csvfile:
    
    # 键有什么作用(键不能少,数据里面的字典可以少)
    fieldnames = ['first_name', 'last_name']
    
    # 创建一个写入对象,(csvfile="文件对象", fieldnames="表头")
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
	
    # 写入表头
    writer.writeheader()
    
    # 通过字典写入数据,key若不存在写入空
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

4. 读取字典

直接看代码:

import csv

with open('names.csv', 'r', newline="", encoding='utf-8') as f:
    
	# 实例化一个读对象
    csv_dict_read = csv.DictReader(f)
    
    # 通过循环对象读取数据
    for item in csv_dict_read:
        
        # 通过字典['key']取值
        print(item['first_name'], item['last_name'])
        # item是一个有序字典
        print(item, item['last_name'])

猜你喜欢

转载自www.cnblogs.com/xcymn/p/12943116.html