Python CSV 续写

导言

CSV(Comma-Separated Values)是一种常见的数据存储格式,它以逗号作为字段之间的分隔符。在Python中,我们可以使用csv模块来读取和写入CSV文件。本文将介绍如何使用Python操作CSV文件,并继续扩展CSV文件的功能。

CSV文件的读取和写入

在Python中,我们可以使用csv模块来读取和写入CSV文件。下面的示例演示了如何读取和写入一个简单的CSV文件。

import csv

# 读取CSV文件
with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

# 写入CSV文件
data = [['Name', 'Age', 'Country'],
        ['Alice', '25', 'USA'],
        ['Bob', '30', 'Canada'],
        ['Charlie', '35', 'UK']]

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

在上述代码中,csv.reader用于读取CSV文件的内容,csv.writer用于写入CSV文件。newline=''参数用于确保在写入CSV文件时不会产生多余的空行。

扩展CSV文件的功能

1. 添加行号

有时候,我们需要给CSV文件的每一行添加一个行号。下面的代码演示了如何给CSV文件的每一行添加行号,并将结果写入一个新的CSV文件。

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    rows = []
    for i, row in enumerate(reader, start=1):
        rows.append([i] + row)

    with open('output.csv', 'w', newline='') as output_file:
        writer = csv.writer(output_file)
        writer.writerows(rows)

在上述代码中,我们使用内置函数enumerate来为每一行添加行号,并将结果存储在一个新的列表rows中。然后,我们使用csv.writer将新的行号添加到输出CSV文件中。

2. 过滤行

在处理CSV文件时,有时候我们需要根据某些条件过滤行。下面的代码演示了如何过滤出满足特定条件的行,并将结果写入一个新的CSV文件。

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    rows = [row for row in reader if row[2] == 'USA']

    with open('output.csv', 'w', newline='') as output_file:
        writer = csv.writer(output_file)
        writer.writerows(rows)

在上述代码中,我们使用列表推导式过滤出满足特定条件的行,并将结果存储在一个新的列表rows中。然后,我们使用csv.writer将过滤后的行写入输出CSV文件中。

3. 处理大型CSV文件

在处理大型CSV文件时,可能会遇到内存不足的问题。为了解决这个问题,我们可以使用csv模块的DictReaderDictWriter类来逐行读取和写入CSV文件。

import csv

with open('data.csv', 'r') as input_file, open('output.csv', 'w', newline='') as output_file:
    reader = csv.DictReader(input_file)
    writer = csv.DictWriter(output_file, fieldnames=reader.fieldnames)
    
    writer.writeheader()
    for row in reader:
        writer.writerow(row)

在上述代码中,csv.DictReader将CSV文件的每一行转换为一个字典,其中键是字段名,值是字段的值。csv.DictWriter用于将字典写入CSV文件。

序列图

下面是一个使用mermaid语法标识的序列图,演示了如何使用Python的csv模块读取和写入CSV文件。

sequenceDiagram
  participant Python
  participant CSV File
  
  Python->>CSV File: 读取CSV文件
  CSV File-->>Python: 返回CSV数据
  
  Python->>CSV File: 写入CSV文件
  CSV File-->>Python: 返回写入结果

上述序列图清晰地展示了Python和CSV文件之间的交互过程。

甘特图

下面是一个使用mer