本文目录导读:

在Python中写入CSV数据有多种方法,以下是几种常用的方式:
使用 csv 模块(推荐)
写入单行数据
import csv
# 写入单行数据
with open('data.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['姓名', '年龄', '城市']) # 写入表头
writer.writerow(['张三', 25, '北京']) # 写入数据
写入多行数据
import csv
# 准备数据
data = [
['姓名', '年龄', '城市'], # 表头
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州']
]
# 写入多行数据
with open('data.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data) # 一次性写入所有行
使用字典写入(更清晰)
import csv
# 准备字典数据
data = [
{'姓名': '张三', '年龄': 25, '城市': '北京'},
{'姓名': '李四', '年龄': 30, '城市': '上海'},
{'姓名': '王五', '年龄': 28, '城市': '广州'}
]
# 写入CSV
with open('data.csv', mode='w', newline='', encoding='utf-8') as file:
fieldnames = ['姓名', '年龄', '城市'] # 字段名称
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # 写入表头
writer.writerows(data) # 写入所有数据
使用 pandas 库(适用于大数据处理)
import pandas as pd
# 创建DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 28],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
# 写入CSV文件
df.to_csv('data.csv', index=False, encoding='utf-8')
追加写入(不覆盖已有数据)
import csv
# 追加模式写入
with open('data.csv', mode='a', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['赵六', 35, '深圳'])
完整示例:读取和写入结合
import csv
# 准备源数据
source_data = [
['产品', '价格', '库存'],
['苹果', 5.5, 100],
['香蕉', 3.2, 150],
['橙子', 4.8, 80]
]
# 写入CSV
with open('products.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(source_data)
# 读取并处理数据
with open('products.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader) # 跳过表头
for row in reader:
product, price, stock = row
print(f"产品: {product}, 价格: {price}, 库存: {stock}")
注意事项
- 编码问题:使用
encoding='utf-8'避免中文乱码 - newline参数:使用
newline=''避免空行问题 - 文件模式:
'w':覆盖写入'a':追加写入'x':只创建新文件(文件已存在会报错)
选择哪种方法取决于你的需求:
- 简单任务:使用
csv模块 - 处理复杂数据或大量数据:使用
pandas - 需要精细控制:使用
csv模块的自定义选项