2026-01-06 16:04:49
Python3网络爬虫开发实战-CSV文件存储
CSV(Comma-Separated Values)是一种以纯文本形式存储表格数据的文件格式,具有结构简单、易于处理的特点。在Python中,可以使用内置的csv模块或第三方库(如pandas)来读写CSV文件。
1. 写入CSV文件1.1 基本写入使用csv.writer可以逐行写入数据:
import csvwith open('data.csv', 'w') as csvfile: writer = csv.writer(csvfile) writer.writerow(['id', 'name', 'age']) # 写入表头 writer.writerow(['10001', 'Mike', 20]) # 写入数据行 writer.writerow(['10002', 'Bob', 22]) writer.writerow(['10003', 'Jordan', 21])输出文件内容:
id,name,age10001,Mike,2010002,Bob,2210003,Jordan,211.2 自定义分隔符通过delimiter参数修改分隔符(如空格):
with open('data.csv', 'w') as csvfile: writer = csv.writer(csvfile, delimiter=' ') # 使用空格分隔 writer.writerow(['id', 'name', 'age']) writer.writerow(['10001', 'Mike', 20])输出文件内容:
id name age10001 Mike 201.3 批量写入多行使用writerows()方法写入二维列表:
with open('data.csv', 'w') as csvfile: writer = csv.writer(csvfile) writer.writerow(['id', 'name', 'age']) writer.writerows([['10001', 'Mike', 20], ['10002', 'Bob', 22]])1.4 字典写入使用csv.DictWriter写入字典数据(适合结构化数据):
with open('data.csv', 'w') as csvfile: fieldnames = ['id', 'name', 'age'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() # 写入表头 writer.writerow({'id': '10001', 'name': 'Mike', 'age': 20})1.5 追加写入将文件打开模式改为'a'(追加):
with open('data.csv', 'a') as csvfile: fieldnames = ['id', 'name', 'age'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writerow({'id': '10004', 'name': 'Durant', 'age': 22})1.6 中文编码处理指定encoding='utf-8'避免乱码:
with open('data.csv', 'a', encoding='utf-8') as csvfile: writer.writerow({'id': '10005', 'name': '王伟', 'age': 22})2. 读取CSV文件2.1 基本读取使用csv.reader逐行读取:
import csvwith open('data.csv', 'r', encoding='utf-8') as csvfile: reader = csv.reader(csvfile) for row in reader: print(row) # 每行是一个列表输出:
['id', 'name', 'age']['10001', 'Mike', '20']['10002', 'Bob', '22']['10005', '王伟', '22']2.2 使用pandas读取pandas.read_csv()更适合数据分析:
import pandas as pddf = pd.read_csv('data.csv')print(df)输出:
id name age0 10001 Mike 201 10002 Bob 222 10005 王伟 223. 关键注意事项文件模式:
'w':覆盖写入。
'a':追加写入。
'r':读取。
编码问题:
中文数据需指定encoding='utf-8'。
数据结构:
列表写入:writerow()或writerows()。
字典写入:DictWriter需定义fieldnames。
性能优化:
大数据量建议使用pandas或分块处理。
掌握CSV的读写操作是网络爬虫和数据存储的基础技能,尤其在处理表格数据时非常高效。