(python)CSV文件的读写

前言

        python 的 csv 模块提供了一些用于处理 CSV(逗号分隔值)文件的方法。

常用的函数方法

  1. csv.reader(file, dialect='excel', **kwargs):创建一个 reader 对象,用于从给定的文件中读取 CSV 数据。可以指定 dialect 参数来指定 CSV 文件的格式。

  2. csv.writer(file, dialect='excel', **kwargs):创建一个 writer 对象,用于将 CSV 数据写入到给定的文件中。

  3. csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', **kwargs):创建一个 reader 对象,读取 CSV 数据并将每行解析为字典。

  4. csv.DictWriter(file, fieldnames, restval='', extrasaction='raise', dialect='excel', **kwargs):创建一个 writer 对象,将字典数据写入到 CSV 文件中。

  5. reader.writerow(row):将一行数据写入 CSV 文件。

  6. writerow(row):将一行数据从 CSV 文件读取。

  7. reader.fieldnames:获取 CSV 文件的列名。

  8. writerow(row):将一行字典数据写入 CSV 文件。

  9. writerows(rows):将多行数据写入 CSV 文件。

示例

import csv

# 读取csv
def read_csv(path):
    """

    :param path: str 存储路径
    :return:
    """
    with open(path, 'r', encoding="utf-8-sig") as f:
        reader = csv.reader(f)
        # 逐行读取
        for row, row_data in enumerate(reader):
            print(row_data)



# 写入csv
def write_csv(data, path):
    """

    :param data: list
    :param path: str 存储路径
    :return:
    """
    # newline='' 这条加上就不会空一行的情况
    with open(path, 'w', newline='') as f:
        my_writer = csv.writer(f)

        # 单条数据写入
        # my_writer.writerows(data[0])

        # 批量写入
        my_writer.writerows(data)

常见的问题和解决方法

  1. 文件编码:CSV 文件可能使用不同的编码格式进行存储,例如 UTF-8、GBK 等。解决方法是在打开文件时指定正确的编码格式,例如使用 open(filename, encoding='utf-8') 打开 UTF-8 编码的文件。

  2. 分隔符选择:CSV 文件的字段通常是通过逗号进行分隔,但有时也可以使用其他分隔符,如分号、制表符等。解决方法是在读取或写入 CSV 文件时,通过设置 delimiter 参数指定正确的分隔符,例如 csv.reader(file, delimiter=';')

  3. 引号处理:CSV 文件中的字段值有时会包含引号(如双引号),用于表示特殊字符或包含分隔符的文本。解决方法是在读取或写入 CSV 文件时,设置 quoting 参数来处理引号,例如 csv.reader(file, quoting=csv.QUOTE_ALL) 可以将所有字段值都视为带引号的字符串。

  4. 处理空值:CSV 文件中的字段可能存在空值,即某些字段没有对应的值。解决方法是在读取或处理数据时,使用条件语句判断字段是否为空,并进行相应的处理,例如跳过空行或给空值设定默认值。

  5. 处理特殊字符:CSV 文件中的字段值可能包含特殊字符,如换行符、制表符等。解决方法是使用 csv.reader 方法读取文件时,设置 lineterminator 参数来处理换行符,例如 csv.reader(file, lineterminator='\n')

  6. 错误处理:在读取或写入 CSV 文件时,可能会遇到一些错误,如文件不存在、权限问题等。解决方法是使用异常处理机制,如 try-except 语句,捕获和处理相关的异常情况。

  7. 数据类型转换:在读取 CSV 文件时,所有字段的值都是字符串类型。如果需要将其转换为其他数据类型(如整数、浮点数),可以使用内置的类型转换函数,例如 int()float() 等。

  8. 大型文件处理:处理大型 CSV 文件时,要注意控制内存消耗。可以使用迭代器或逐行处理的方式来降低内存占用,例如使用 csv.reader 的迭代器模式进行逐行读取数据,而不是一次性读取整个文件。

使用总结

只要在使用csv库时,注意以下几点,就可以正常操作csv文件了.

  1. 导入库:首先要导入 csv 库,使用 import csv 语句将其引入 Python 程序中。

  2. 打开文件:使用 open() 函数打开 CSV 文件,并指定文件名和相应的模式(如读取模式 'r'、写入模式 'w' 等)。

  3. 创建读写对象:对于读取操作,可以使用 csv.reader() 方法创建一个 CSV 读取对象;对于写入操作,可以使用 csv.writer() 方法创建一个 CSV 写入对象。

  4. 设置参数:根据具体情况,可以设置一些参数来配置读写行为。例如,可以设置分隔符 delimiter、引号处理方式 quoting、换行符 lineterminator等。

  5. 读取数据:通过遍历 CSV 读取对象,可以逐行读取 CSV 文件中的数据。每一行数据都是一个列表,其中每个元素表示一个字段的值。

  6. 处理数据:对于读取到的数据,可以进行各种处理操作,如验证、过滤、转换等,以满足需求。可以使用列表索引或迭代方式访问和处理字段值。

  7. 写入数据:通过调用 CSV 写入对象的 writerow() 方法,可以逐行将数据写入到 CSV 文件中。需要将每行数据作为一个列表传递给该方法。

  8. 关闭文件:在读写完成后,记得使用 close() 方法关闭 CSV 文件,以释放资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marst·Writer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值