CSV文件又稱為逗號分隔值文件,是一種通用的、相對簡單的文件格式,用以存儲表格數據,包括數字或者字符。CSV是電子表格和數據庫中最常見的輸入、輸出文件格式。
通過爬蟲將數據抓取的下來,然后把數據保存在文件,或者數據庫中,這個過程稱為數據的持久化存儲。本節介紹Python/ target=_blank class=infotextkey>Python內置模塊CSV的讀寫操作。
CSV文件寫入
1)csv.writer()
csv模塊中的writer類可用于讀寫序列化的數據,其語法格式如下:
writer(csvfile, dialect='Excel', **fmtparams)1復制代碼類型:[JAVAscript]
參數說明:
csvfile:必須是支持迭代(Iterator)的對象,可以是文件(file)對象或者列表(list)對象。
dialect:編碼風格,默認為excel的風格,也就是使用逗號,分隔。
fmtparam:格式化參數,用來覆蓋之前dialect對象指定的編碼風格。
如果想同時寫入多行數據,需要使用writerrows()方法,代碼如下所示:
import csv
with open('aggs.csv', 'w', newline='') as f:
writer = csv.writer(f)
# 注意傳入數據的格式為列表元組格式
writer.writerows([('hello','world'), ('I','love','you')])12345復制代碼類型:[JavaScript]
aggs.csv文件內容:
hello,world
I,love,you12復制代碼類型:[python]
2)csv.DictWriter()
當然也可使用DictWriter類以字典的形式讀寫數據,使用示例如下:
import csv
with open('names.csv', 'w', newline='') as csvfile:
#構建字段名稱,也就是key
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# 寫入字段名,當做表頭
writer.writeheader()
# 多行寫入
writer.writerows([{'first_name': 'Baked', 'last_name': 'Beans'},{'first_name': 'Lovely', 'last_name': 'Spam'}])
# 單行寫入
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})1234567891011復制代碼類型:[python]
name.csv文件內容,如下所示:
first_name,last_name
Baked,Beans
Lovely,Spam
Wonderful,Spam1234復制代碼類型:[python]
CSV文件讀取
1)csv,reader()
csv模塊中的reader類和DictReader類用于讀取文件中的數據,其中reader()語法格式如下:
csv.reader(csvfile, dialect='excel', **fmtparams)1復制代碼類型:[python]
2)csv.DictReader()
應用示例如下:
import csv
with open('names.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['first_name'], row['last_name'])12345復制代碼類型:[python]
輸出結果:
Baked Beans
Lovely Spam
Wonderful Spam