CSV操作 #

一、读取CSV #

python
import csv

# 读取为列表
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)  # ['name', 'age', 'city']

# 读取为字典
with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)  # {'name': 'Tom', 'age': '25', 'city': 'Beijing'}

二、写入CSV #

python
import csv

# 写入列表
data = [
    ['name', 'age', 'city'],
    ['Tom', 25, 'Beijing'],
    ['Jerry', 30, 'Shanghai']
]

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

# 写入字典
data = [
    {'name': 'Tom', 'age': 25, 'city': 'Beijing'},
    {'name': 'Jerry', 'age': 30, 'city': 'Shanghai'}
]

with open('output.csv', 'w', newline='') as f:
    fieldnames = ['name', 'age', 'city']
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

三、追加数据 #

python
import csv

# 追加行
with open('data.csv', 'a', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['Alice', 28, 'Guangzhou'])

四、自定义分隔符 #

python
import csv

# 使用制表符
with open('data.tsv', 'r') as f:
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        print(row)

# 写入制表符分隔
with open('output.tsv', 'w', newline='') as f:
    writer = csv.writer(f, delimiter='\t')
    writer.writerows(data)

五、处理编码 #

python
import csv

# 读取UTF-8编码
with open('data.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

# 写入UTF-8编码(带BOM,Excel兼容)
with open('output.csv', 'w', encoding='utf-8-sig', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

六、常用选项 #

python
import csv

# reader选项
reader = csv.reader(f,
    delimiter=',',      # 分隔符
    quotechar='"',      # 引用字符
    quoting=csv.QUOTE_MINIMAL  # 引用方式
)

# writer选项
writer = csv.writer(f,
    delimiter=',',
    quotechar='"',
    quoting=csv.QUOTE_ALL  # 所有字段加引号
)
最后更新:2026-03-16