在網路爬蟲中我們一般都是爬取的資料,最後一般會寫入到excel檔案中,所以不可避免的要用到csv模組,所以弄清楚csv模組是如何寫入檔案的就顯得十分重要了。這裡要說的資料型別不是dataframe,因為那樣很容易就弄清楚是怎麼寫入的,本文主要介紹要寫入的資料儲存在列表中的情形,比如:
data =
接下來我們將會詳細說明csv模組是如何寫入檔案的
首先我們要知道寫入檔案的基本語法結構如下
import csv
data =
file_name = "d://wangyang//練習的python程式//網路爬蟲"
with open(file_name, "w+", errors="ignore") as f:
f_csv = csv.writer(f)
f_csv.writerows(data)
這裡我們簡要介紹一下open函式的一些用法,
詳細介紹可以參考open函式——菜鳥驛站
需要填檔名(包含絕對路徑+檔名),比如
file_name = "d://wangyang//練習的python程式//網路爬蟲"
表示在電腦d盤的wangyang資料夾中的網路爬蟲檔案裡的writefile.csv檔案
更多模式如下,可以根據需要進行選擇
注意:不管選擇哪種寫入模式,
在執行程式之前都要把檔案關閉
,否則會報錯,因為它比較害羞你看著它的話,它是沒有辦法寫入的!
open函式中還有很多可選引數,可以根據需要進行選擇,這裡主要介紹以下兩個,詳細的介紹可以在網上查
errors="ignore"表示當寫入文件遇到錯誤是自動跳過,寫入下乙個元素。因為有可能在爬蟲的過程中有none值,寫入的時候會報錯,這時我們忽略它。
newline=""表示不要空行
比如
import csv
data =
x1 = str("你好")
data2 = [["id", "123"], x1, "***", "male"]
file_name = "d://wangyang//練習的python程式//網路爬蟲"
with open(file_name, "w+", errors="ignore") as f:
f_csv = csv.writer(f)
f_csv.writerows(data2)
結果如下
給open函式加上newline引數後,如
import csv
data =
x1 = str("你好")
data2 = [["id", "123"], x1, "***", "male"]
file_name = "d://wangyang//練習的python程式//網路爬蟲"
with open(file_name, "w+", errors="ignore", newline="") as f:
f_csv = csv.writer(f)
f_csv.writerows(data2)
結果如下
這裡主要介紹的是writerow與writerows的區別,我們先簡單看看下面的例子,要寫入的檔案如下
data = ["id", "123", "***", "male"]
其他**均一樣用writerow寫入的結果
用writerows寫入的結果
首先我們要了解到csv寫入的是乙個可迭代物件(比如列表,字串),writerow只寫入一維的資料,而writerows寫入二維的資料,具體解釋如下
兩者主要的區別就是:writerow只拆一次寫入,writerows拆兩次寫入(這裡的拆都是拆的可迭代物件,如列表、字串等)
writerow只拆一次,拆的原則是從外往裡拆,第一次將列表拆成四個物件「id」,"123","***","male",好了只能拆一次,所以依次把這四個物件分別寫入單元格中。
再比如我們看下面的例子
data2= [["id", "123"], "***", "male"]
首先拆一次,得到下面三個物件
第乙個物件:列表["id","123"];第
二、三個物件分別是:"***","male"(兩者都是字串)
好了,因為只能拆一次,所以把這三個物件分別寫入單元格中,如下所示
wirterows拆兩次,這裡說的不是能拆兩次,是必須拆兩次!看之前的例子,首先拆第一次,得到四個物件,分別是
"id","123","***","male"(均是字串)
因為必須拆兩次,所以還要繼續拆(因為它們都是字串,只能拆可迭代物件,所以可以繼續),比如第乙個
「id」可以拆開為,i,d,分別寫入單元格中,在同一行中
另起一行拆第二個物件,後面類似。
再考慮例子data2,首先拆第一次,得到三個物件,好的,接下來來拆第乙個物件
因為它是乙個列表,可迭代物件之一,所以能拆,拆成兩個物件分別為:「id」,"123"(兩個都是字串,還是能拆的,但是不能繼續拆了,因為已經拆了兩次了),所以id在同乙個單元格內,與「123」在同一行,另起一行繼續拆別的物件,所以結果如下:
最後看下面的例子
data3 = [[["id", "123"], "***"], "male"]
現在猜猜看最後的結果是什麼
是不是跟你猜的結果一樣呢?
python中的csv模組
最近學習機器學習遇到了csv這個包,怎麼用呢,這成了乙個疑問,從網上查了一下,簡單的總結一下。什麼是csv?csv檔案格式是一種通用的電子 和資料庫匯入匯出格式。可以用來處理從csv檔案中讀入,讀出一系列的數值或字典。csv的基本應用 先來做乙個比較吧 1 with open c users l d...
OpenCart中基於重量的配送模組是如何工作的?
opencart中基於重量的配送模組讓你使用自己的 折算表來決定配送 可以基於不同的重量允許設定 範圍,重量和 的格式如下 weight 重量 cost weight 重量 cost 等 例如,如果你想做如下的設定 總重量等於或小於 10lbs 運費 10 總重量介於 11 20lbs 運費 15 ...
python中 ,CSV模組的讀操作
一 python的csv模組 python自帶了csv模組提供使用者對csv檔案進行讀寫操作 csv是comma separated values的縮寫,是用文字檔案形式儲存的 資料 二 csv的讀操作 檔案 test data.csv 1 reader函式 接受乙個可迭代的物件,比如csv檔案,返...