【学习心得】Python中CSV文件存储

(一)Python自带csv库

        Python中内置csv库实现对csv文件的读写

import csv

(二)写入csv

写入csv要用到“写入器” ——> writer

1、一次性写一行(writerow函数)

# 写入操作(一次写一行)(列表写入)
with open('data.csv', 'w', encoding='utf-8-sig') as csvfile:  # utf-8-sig让生成的csv文件带有DOM
    writer = csv.writer(csvfile)  # 生成一个“写手”

    writer.writerow(['id', 'name', 'age'])  # 一次写一行
    writer.writerow(['01', 'xiaodai', 28])
    writer.writerow(['02', 'xiaoshizi', 22])

2、一次性写多行(writerows函数)

# 写入操作(一次写多行)(列表写入)
with open('data.csv', 'a') as csvfile:
    writer = csv.writer(csvfile, delimiter='+')  # delimiter指定分隔符,默认是逗号,这里指定为加号
    writer.writerows([
        ['id', 'name', 'age'], 
        ['03', 'xiaopidan', 1], 
        ['04', 'xiaolajiao', 1],
    ])

3、字典数据的写入(DictWriter类)

# 写入操作(一次写一行)(字典写入)
with open('data.csv', 'a', encoding='utf-8-sig') as csvfile:  # utf-8可以写入中文
    fieldnames = ['id', 'name', 'age']  # 可以将列名单独定义
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)  # 创建“写手”的时候就可以传入表头
    writer.writerow({
        'id': '05',
        'name': '小呆',
        'age': 28,
        })

 4、写入多行字典

# 写入操作(一次写多行)(取消空行)
with open('data.csv', 'a', encoding='utf-8', newline='') as csvfile:
    """
    这通常是由于在写入CSV数据时,每行数据之间都会自动添加一个换行符,从而导致出现空行
    要取消数据之间的空行,可以在写入CSV数据时指定newline=''
    """
    fieldnames = ['id', 'name', 'age']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    data = [
        {'id': '06', 'name': '小柿子', 'age': 22},
        {'id': '07', 'name': '小皮蛋', 'age': 1},
        {'id': '08', 'name': '小辣椒', 'age': 1},
    ]
    writer.writerows(data)

(三)读取csv

读取csv要用到“读取器” ——> reader

with open('data.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)  # 生成读取器,是一个可迭代对象
    for row in reader:            # for循环遍历读取
        print(row)

(四)常见问题

1、空行问题

原因:这通常是由于在写入CSV数据时,每行数据之间都会自动添加一个换行符,从而导致出现空行

解决方法:要取消数据之间的空行,可以在写入CSV数据时指定newline=''

open('data.csv', 'a', newline='')

2、中文问题

原因:没有指定UTF-8编码

解决方法:encoding='utf-8'

open('data.csv', 'a', encoding='utf-8')

3、CSV乱码问题

原因:Excel默认CSV带有DOM,而创建时没有指定带有DOM

解决方法:在创建一个带DOM的CSV ,传入encoding='utf-8-sig'即可

open('data.csv', 'a', encoding='utf-8-sig')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值