CSV (Comma-Separated Values) 是一种常用的数据存储格式,它以纯文本形式存储表格数据(数字和文本)。每行代表一条记录,字段间用逗号分隔。
Python 标准库中的 csv
模块提供了处理 CSV 文件的功能。
import csv
# 要保存的数据
data = [
['姓名', '年龄', '城市'],
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州']
]
# 写入CSV文件
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(data)
import csv
# 字典形式的数据
data = [
{'name': '张三', 'age': 25, 'city': '北京'},
{'name': '李四', 'age': 30, 'city': '上海'},
{'name': '王五', 'age': 28, 'city': '广州'}
]
# 写入CSV文件
with open('output_dict.csv', 'w', newline='', encoding='utf-8') as f:
fieldnames = ['name', 'age', 'city'] # 定义表头
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader() # 写入表头
writer.writerows(data) # 写入数据
import csv
# 新数据
new_data = [
['赵六', 35, '深圳'],
['钱七', 40, '杭州']
]
# 追加模式('a')打开文件
with open('output.csv', 'a', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(new_data)
原因:编码不匹配
解决:指定正确的编码格式(通常使用 utf-8
)
with open('output.csv', 'w', newline='', encoding='utf-8-sig') as f:
# utf-8-sig 可以解决Excel打开时的乱码问题
原因:Windows 系统下换行符问题
解决:在 open()
函数中添加 newline=''
参数
原因:数据中包含分隔符
解决:使用 csv
模块自动处理,或使用不同的分隔符
# 使用不同的分隔符
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f, delimiter='|') # 使用 | 作为分隔符
writer.writerows(data)
解决:减少 I/O 操作次数,批量写入
# 分批写入大数据
batch_size = 1000
for i in range(0, len(big_data), batch_size):
batch = big_data[i:i+batch_size]
with open('big_output.csv', 'a', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(batch)
import csv
class CustomDialect(csv.Dialect):
delimiter = ';'
quotechar = '"'
quoting = csv.QUOTE_MINIMAL
lineterminator = '\n'
with open('custom.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f, dialect=CustomDialect())
writer.writerows(data)
import pandas as pd
# 创建DataFrame
df = pd.DataFrame(data, columns=['name', 'age', 'city'])
# 写入CSV
df.to_csv('pandas_output.csv', index=False, encoding='utf-8-sig')
没有搜到相关的文章