【学习心得】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')

猜你喜欢

转载自blog.csdn.net/qq_39780701/article/details/130257121