本文目录导读:

- 案例1:使用csv模块写入基础CSV
- 案例2:使用csv.writer逐行写入
- 案例3:使用DictWriter写入字典数据
- 案例4:处理特殊字符和复杂数据
- 案例5:动态生成数据并写入
- 案例6:使用pandas写入(推荐用于大数据)
- 重要提示:
我来为您提供几个Python CSV导出写入表格数据的完整案例。
案例1:使用csv模块写入基础CSV
import csv
# 准备数据
data = [
['姓名', '年龄', '城市', '职业'],
['张三', 25, '北京', '工程师'],
['李四', 30, '上海', '设计师'],
['王五', 28, '广州', '产品经理'],
['赵六', 35, '深圳', '架构师']
]
# 写入CSV文件
with open('employees.csv', 'w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
writer.writerows(data)
print("CSV文件创建成功!")
案例2:使用csv.writer逐行写入
import csv
# 写入CSV文件
with open('students.csv', 'w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
# 写入表头
writer.writerow(['姓名', '学科', '成绩', '评级'])
# 逐行写入数据
writer.writerow(['小明', '数学', 95, 'A'])
writer.writerow(['小红', '语文', 88, 'B'])
writer.writerow(['小华', '英语', 92, 'A'])
writer.writerow(['小李', '科学', 78, 'C'])
print("学生成绩表创建成功!")
案例3:使用DictWriter写入字典数据
import csv
# 准备字典数据
data = [
{'name': '张三', 'age': 25, 'department': '技术部', 'salary': 15000},
{'name': '李四', 'age': 30, 'department': '市场部', 'salary': 18000},
{'name': '王五', 'age': 28, 'department': '人事部', 'salary': 12000},
{'name': '赵六', 'age': 35, 'department': '财务部', 'salary': 20000}
]
# 写入CSV文件
with open('employees_detail.csv', 'w', newline='', encoding='utf-8-sig') as file:
fieldnames = ['name', 'age', 'department', 'salary']
writer = csv.DictWriter(file, fieldnames=fieldnames)
# 写入表头
writer.writeheader()
# 写入数据
writer.writerows(data)
print("员工详细信息表创建成功!")
案例4:处理特殊字符和复杂数据
import csv
# 复杂数据示例(包含特殊字符)
data = [
['产品名称', '描述', '价格', '库存数量'],
['笔记本电脑', '15.6英寸, 8GB内存, 256GB固态', 5999.99, 50],
['无线鼠标', '双模连接, 静音设计, 充电型', 129.50, 200],
['机械键盘', '青轴, RGB背光, 104键', 399.00, '已售罄'],
['显示器', '27英寸, 4K分辨率, HDR', '2,999', 30]
]
with open('products.csv', 'w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file,
quoting=csv.QUOTE_ALL, # 所有字段加引号
delimiter=',', # 分隔符
quotechar='"', # 引号字符
doublequote=True) # 双重引号优化
writer.writerows(data)
print("产品数据表创建成功!")
案例5:动态生成数据并写入
import csv
from datetime import datetime
# 模拟生成销售数据
def generate_sales_data():
sales_data = []
# 表头
sales_data.append(['日期', '产品ID', '产品名称', '销售量', '销售额'])
# 模拟数据
products = ['A001', 'A002', 'A003', 'B001']
product_names = ['手机', '平板', '耳机', '充电器']
for i in range(10):
import random
product_idx = random.randint(0, 3)
sales_data.append([
datetime.now().strftime('%Y-%m-%d'),
products[product_idx],
product_names[product_idx],
random.randint(5, 100),
round(random.uniform(500, 5000), 2)
])
return sales_data
# 写入CSV文件
sales = generate_sales_data()
with open('daily_sales.csv', 'w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
writer.writerows(sales)
print("销售数据表创建成功!")
print(f"共写入 {len(sales)-1} 条销售记录")
案例6:使用pandas写入(推荐用于大数据)
import pandas as pd
# 创建DataFrame
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳'],
'工资': [15000, 18000, 12000, 20000]
}
df = pd.DataFrame(data)
# 写入CSV文件
df.to_csv('employees_pandas.csv',
index=False, # 不保存行索引
encoding='utf-8-sig', # 编码设置
sep=',', # 分隔符
mode='w', # 写入模式
header=True) # 包含表头
print("使用pandas创建CSV文件成功!")
print(df.head()) # 显示前几行数据
重要提示:
- 编码问题:使用
utf-8-sig编码可以在Excel中正确显示中文 - 换行问题:Windows系统需要添加
newline=''参数避免多余空行 - 引号处理:如果数据中包含逗号,需要设置
quoting=csv.QUOTE_ALL - 文件路径:建议使用绝对路径或
os.path.join()构建路径
选择哪个案例取决于您的具体需求:
- 简单数据:案例1最直接
- 字典数据:案例3最方便
- 大型数据:案例6最推荐
- 特殊字符:案例4最安全