在 Python 中操作 CSV 文件通常使用内置的 csv 模块,或第三方库如 pandas(适合复杂数据处理)。以下是详细的操作指南:


一、使用 csv 模块(标准库)

1. 读取 CSV 文件

import csv

with open('data.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    # 跳过表头(如果有)
    header = next(reader)
    # 逐行读取数据
    for row in reader:
        print(row)  # row 是一个列表,按列顺序存储数据

2. 写入 CSV 文件

import csv

data = [
    ["Name", "Age", "City"],
    ["Alice", 30, "New York"],
    ["Bob", 25, "London"],
]

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

3. 处理带分隔符或引号的 CSV

  • 自定义分隔符​(如 ;):

    csv.reader(file, delimiter=';')
  • 处理引号​:

    csv.writer(file, quoting=csv.QUOTE_ALL, quotechar='"')

4. 使用 DictReader 和 DictWriter(按列名操作)

# 读取
with open('data.csv', 'r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['Name'], row['Age'])  # 按列名访问

# 写入
headers = ['Name', 'Age', 'City']
with open('output.csv', 'w', newline='') as file:
    writer = csv.DictWriter(file, fieldnames=headers)
    writer.writeheader()
    writer.writerow({'Name': 'Charlie', 'Age': 28, 'City': 'Paris'})

二、使用 pandas 库(适合复杂操作)

1. 安装 pandas

pip install pandas

2. 读取 CSV

import pandas as pd

df = pd.read_csv('data.csv', encoding='utf-8')
print(df.head())  # 显示前5行

3. 写入 CSV

df.to_csv('output.csv', index=False)  # index=False 表示不保存行索引

4. 处理数据示例

# 筛选数据
filtered = df[df['Age'] > 25]

# 添加新列
df['Country'] = ['USA', 'UK', 'France']

# 合并多个 CSV
df_combined = pd.concat([df1, df2], ignore_index=True)

使用pandas来遍历csv文件,csv文件没有标题,只能通过下标来获取

import pandas as pd


def read_csv():
    """读取csv文件"""
    with open("a.csv", "r", encoding="utf-8") as f:
        df = pd.read_csv(f)
        # 行和列数
        print(df.shape)  # (257, 16)
        # 遍历
        for i, line in df.iterrows():
            # 指定列下标查询,因为没有标题,只能按下标来查询
            print(line[0], line[1], line[2])


if __name__ == "__main__":
    read_csv()

三、常见问题

  1. 编码问题​:使用 encoding='utf-8' 或 encoding='gbk' 避免乱码。

  2. 大文件处理​:逐行读取(避免一次性加载到内存):

    with open('large_file.csv', 'r') as file:
        for chunk in pd.read_csv(file, chunksize=1000):
            process(chunk)
  3. 自定义分隔符​:如 TSV 文件使用 pd.read_csv('data.tsv', sep='\t')


四、总结

  • 简单任务​:使用 csv 模块(无需安装第三方库)。

  • 复杂数据处理​:使用 pandas(支持数据清洗、分析和高效操作)。

  • 注意文件路径、编码和分隔符,根据实际数据调整参数。

如果有更具体的需求(如处理特殊格式或性能优化),可以进一步探讨!