python爬取數據保存為csv時生成編號_將爬取到到數據以CSV格式存儲

CSV文件存儲

CSV,全稱為Comma-Separated Values,中文可以叫做逗號分隔值或字符分隔值,其文件以純文本形式存儲表格數據。該文件是一個字符序列,可以由任意數目的記錄組成,記錄間以某種換行符分隔。每條記錄由字段組成,字段間的分隔符是其他字符或字符串,最常見的是逗號或者制表符。不過所有記錄都有完全相同的字段序列,相當于一個結構化表的純文本形式。它比Excel文件更為簡潔,XLS文本是電子表格,它包含了文本、數值、公式和數據等內容,而CSV中不包含這些內容,就是特定字符分隔的純文本,結構簡單清晰。所以,有時候用CSV來保存數據是比較方便的。本節中,我們來講解Python讀取和寫入CSV文件的過程。

寫入這里首先來看一個最簡單的例子:

f31fbe096b63f624f27fcb34fd9586fc1a4ca339.png?token=38e1ba467eeb1dda749be8133933a4a2&s=21D2A3641AA48B6C4E4DF4030300E0C3

首先,打開data.csv文件,然后指定打開的模式為w(即寫入),獲得文件句柄,隨后調用csv庫的writer( )方法初始化寫入對象,傳入該句柄,然后再調用writerow( )方法傳入每行的數據即可完成寫入。

運行結束之后,會生成一個名為data.csv的文件,此時數據就成功寫入了。直接以文本形式打開的話,其內容如下:

8694a4c27d1ed21b9e5446bcd4bfb0c050da3f1b.png?token=3bf1cf2951a7a8419fb3a563685bf9ff&s=21C23364EEA2F77C0C5DA40F0300E0C2

可以看到,寫入的文本默認以逗號分隔,調用一次writerow( )方法即可寫入一行數據。用Excel打開的結果如下所示:

d439b6003af33a87023bb8b7be8d7d3c5243b51b.png?token=0b816347848ee5882c4ab74d00a4d893&s=7FAE3C6303BF60295CDDC1DA030080B2

如果想要修改列與列之間的分隔符,可以傳入delimiter參數,其代碼如下:

u=38521729,521851407&fm=173&app=49&f=JPEG?w=640&h=228&s=A8C2B5408BE0A9620CED5C030000B0C1

這里在初始化寫入對象時傳入delimiter為空格,此時輸出結果的每一列就是以空格分隔了,內容如下:

a2cc7cd98d1001e97b4c75e2c0df16e856e797c4.png?token=43d181e9d4f0e9b9b68a2d054d8b7def&s=71D22364EFAEB76C0C5DF8070300E0C0

另外,我們也可以調用writerows( )方法同時寫入多行,此時參數就需要為二維列表,例如:

6609c93d70cf3bc7f5c98820a8d1d7a5cf112a02.png?token=b1085677ab62ea89160f7c57df9c1311&s=21D2A3645EA59B700C5DE0070300E0C0

輸出效果是相同的,內容如下:

cf1b9d16fdfaaf51e6c321b0f585f9eaf11f7af6.png?token=8244328b237055ab759d0c6a194d9651&s=60D2A364EEA2F77C0C5DF9070300E0C2

但是一般情況下,爬蟲爬取的都是結構化的數據,我們一般會用字典來表示。在csv庫中也提供了字典的寫入方式,示例如下:

cefc1e178a82b90132865216095cc4733812efc6.png?token=57aa5270cd8e018bb9a84fa6b682b46d&s=61D2A3641EE089700EED7D07030070C2

這里先定義3個字段,用fieldnames表示,然后將其傳給DictWriter來初始化一個字典寫入對象,接著可以調用writeheader( )方法先寫入頭信息,然后再調用writerow( )方法傳入相應的字典即可。最終寫入的結果是完全相同的,內容如下:

5ab5c9ea15ce36d3449b55d342225783eb50b188.png?token=2dc0319bf4f4f2f607523ae4bcf03d25&s=70D23364EEA6B76C0C5DF40F0300A0C2

這樣就可以完成字典到CSV文件的寫入了。

另外,如果想追加寫入的話,可以修改文件的打開模式,即將open( )函數的第二個參數改為a,代碼如下:

0b7b02087bf40ad1fb15576a2efd7cdbabecce98.png?token=7c380195630923a0469b3e72886177ff&s=60D2A3648FE48972145524030300E0C2

這樣在上面的基礎上再執行這段代碼,文件內容便會變成:

b90e7bec54e736d11889dcede38122c6d7626996.png?token=5c0a23763a92618c64e972c5d54fc3f5&s=60D22364EEA2F77C4E6D7D0F0300E0C0

如果要寫入中文內容的話,可能會遇到字符編碼的問題,此時需要給open( )參數指定編碼格式。比如,這里寫入一行包含中文的數據,代碼需要改寫如下:

94cad1c8a786c9171c7215ffb0ec1dcb39c757dc.png?token=6e6e76bc577510831bc1e1cdebf64305&s=21D2A3640AA1AD641EC5B4070300B0C2

這里需要給open( )函數指定編碼,否則可能會發生編碼錯誤。

另外,如果接觸過pandas等庫的話,可以調用DataFrame對象的to_csv( )方法來將數據寫入CSV文件中。

讀取

我們同樣可以使用csv庫來讀取CSV文件。例如,將剛才寫入的文件內容讀取出來。相關代碼如下:

3bf33a87e950352a9c730eb2299296f6b3118b4b.png?token=34ab0fa3faa4ba845c0f85bd3c6d11b5&s=79C2A3441AE08F704E4DE5070300E0C3

運行結果如下:

6a600c338744ebf8fcff2e4da028ba2e6159a708.png?token=75b412e83407b26de1d84d25be3c958f&s=6BC21367EEAAFF744E59D40F0300E0C1

這里我們構造的是Reader對象,通過遍歷輸出了每行的內容,每一行都是一個列表形式。注意,如果CSV文件中包含中文的話,還需要指定文件編碼。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

博達3956交換機配置手冊_網絡設備維保淺談之交換機維保

隨著信息化的飛速發展,交換機作為信息流通的承載者,是應用最為廣泛的網絡設備之一,其作用不言而喻。因此,在日產使用中,要注意交換機這種核心的設備的維護與保養,以免引發故障。交換機運維需要注意哪些問題…

java cas原理_Java并發之原子變量及CAS算法-上篇

Java并發之原子變量及CAS算法-上篇編輯?概述本文主要講在Java并發編程的時候,如果保證變量的原子性,在JDK提供的類中是怎么保證變量原子性的呢?。對應Java中的包是:java.util.concurrent.atomic包下。因為涉及到了CAS算法&#x…

node ajax validator,使用validator.js對字符串數據進行驗證

validator.js是一個對字符串進行數據驗證和過濾的工具庫,同時支持Node端和瀏覽器端,github地址是https://github.com/chriso/validator.js主要API如下:驗證APIcontains(str, seed)驗證str中是否含有seedequals(str, comparison)驗證是否相等i…

css span 右端對齊_CSS標準文檔流

web頁面的制作,是個“流”,像水流一樣,必須從上往下,一點點的編織,不像畫畫,可以這個地方畫一個,另一個地方畫一個,隨意而為。標準文檔流的一些微觀現象1. 空白折疊現象1)標簽與標簽…

composer升級_Composer 使用姿勢與 Lumen 升級指南

Composer 使用姿勢這里主要說說 composer.json 和 composer.lock 文件的作用。composer.jsoncomposer.json 文件包含了項目的依賴和其它的一些元數據,使用 JSON format 編寫。當初次調用 composer install 時,Composer 會根據 composer.json 文件&#x…

服務器間傳文件$d,基于OpenSSH+WinSCP完成Windows服務器之間的文件傳輸

背景經常會遇到在不同服務器之間傳輸文件,Linux和Linux之間用命令rsync, windows和linux之間普遍是有圖形化界面的ftp軟件,老黃平時用的比較多的是FileZilla。Windows和Windows之間的話,90%都是在一臺機器復制,到另一臺…

dbgrideh 為什么只一行_Mysql性能優化:為什么count(*)這么慢?

導讀在開發中一定會用到統計一張表的行數,比如一個交易系統,老板會讓你每天生成一個報表,這些統計信息少不了sql中的count函數。但是隨著記錄越來越多,查詢的速度會越來越慢,為什么會這樣呢?Mysql內部到底是…

jmeter 高并發測試報告_JMeter分布式測試

一、為什么要使用分布式測試按照一般的壓力機配置,jmeter的GUI模式下(Windows),最多支持300左右的模擬請求線程,再大的話,容易造成卡頓、無響應等情況,這是限于jmeter其本身的機制和硬件配置。有時候為了盡量模擬業務場…

登陸攔截攔截ajax,過濾器實現登錄攔截需要注意的問題(AJAX請求的處理)

1.問題描述:最近自己在寫demo時遇到一個問題,在ajax請求時用Filter做登錄攔截,結果頁面不跳轉(Ajax是不能做轉發和重定向的)、、、、最終的最終在同事zt的提示下,恍然大悟,雖然很基本的問題,但也糾結了好久…

半圓陰影_六年級數學:怎么求陰影部分面積?正方形與半圓,割補法常考題

歡迎您來到方老師數學課堂,請點擊上方藍色字體,添加關注。所有的視頻內容,全部免費,請大家放心關注,放心訂閱。六年級數學:怎么求陰影部分面積?正方形與半圓,割補法常考題。大家先在…

c語言判斷整數_用c++編寫閏年的判斷基礎程序

其實c語言與c語言有太多共同的東西,學習過c語言再學習c語言就顯得輕而易舉。當然學過了c再去學習c語言也是有一些幫助的(但是個人不提倡先學習c在學c語言)。由于現在經常看見有關閏年的程序,風式各樣,眼花繚亂,些許凌亂&#xff0…

cat日志 搜索_大日志,看我如何對付你

在服務器接口測試中,我們經常會和各種日志打交道。一旦測試時服務端出現了問題,而單憑服務端的日志又不能發現問題原因的時候,往往開發要向我們測試人員詢問客戶端這邊的情況,希望看看我們能不能提供一些有用信息,如錯…

python編譯成dll文件_用vc生成可被python調用的dll文件

前提已經有.c 和.i文件 用swid編譯了.i文件生成了wrap.c文件和.py文件 vc創建dll工程 將.h加入到頭文件中.c文件和wrap.c文件添加到源文件中 將.i文件添加到工程目錄下 Tools->Options->Directories中修改include 和lib 添加python里的include 和libs 把\libs\python27.l…

加載gif動圖_GIF生成神器——ScreenToGif

每次需要做一個動圖展示時,總是感覺很頭疼。截圖吧,需要的圖片太多;錄視頻吧,文件太大;做動圖吧,太麻煩。今天推薦的這個軟件或許能夠解決大家這個困惑,今天推薦的是動圖生成神器——ScreenToGi…

vue底部選擇器_vue實現動態顯示與隱藏底部導航的方法分析

vue實現動態顯示與隱藏底部導航的方法分析本文實例講述了vue實現動態顯示與隱藏底部導航的方法。分享給大家供大家參考,具體如下:在日常項目中,總有幾個頁面是要用到底部導航的,總有那么些個頁面,是不需要底部導航的&a…

java 修改最大nio連接數_關于java流的幾個概念:IO、BIO、NIO、AIO,有幾個人全知道?...

關于同步、阻塞的知識我之前的文章有介紹,所以關于流用到這些概念與之前多線程用的概念一樣。下面具體來看看java中的幾種流IO/BIOBIO就是指IO,即傳統的Blocking IO,即同步并阻塞的IO。這也是jdk1.4之前的唯一選擇,依賴于ServerSocket實現&am…

python神秘的魔法函數_python魔法函數

一、參考二、構造和初始化2.1 __new__在對象實例化過程中最先調用的方法是__new__, 該方法接收參數為類,然后將其他參數,傳遞給__init__, 該魔法函數比較少見,可以使用其,創建單例類; __new__方法是一個類方法,需要攜帶…

python掃雷 廣度優先_廣度優先搜索(BFS)解題總結

定義 廣度優先搜索算法(Breadth-First-Search),是一種圖形搜索算法。 簡單的說,BFS是從根節點開始,沿著樹(圖)的寬度遍歷樹(圖)的節點。 如果所有節點均被訪問,則算法中止。 BFS同樣屬于盲目搜索。 一般用隊…

python默認參數陷阱_python默認參數陷阱

0|1陷阱?學過函數的人一定聽說過函數的默認參數,關于函數的默認參數,請看以下的例子:def extendList(val, lst[]):lst.append(val)return lstlist1 extendList(10)list2 extendList(123, [])print(list1 %s % list1)print(list…

python裁剪圖片并保存_python – 如何從圖像中剪切輪廓并將其保存到新文件中

大家好,這是我的第一個問題所以請保持溫和.我有一個計算機視覺領域的項目,我是新的,我會很感激一些幫助.我有一個pcb的圖像,我的(首先)任務是從背景中切斷電路板并將其保存到新文件.如果結果只是沒有灰色背景的普通pcb,那就沒問題了. 我到目前為止嘗試的是,首先使用閾值將圖像轉…