日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用Python將數(shù)據(jù)寫到CSV文件

我們從網(wǎng)上爬取數(shù)據(jù),***一步會考慮如何存儲數(shù)據(jù)。如果數(shù)據(jù)量不大,往往不會選擇存儲到數(shù)據(jù)庫,而是選擇存儲到文件中,例如文本文件、CSV 文件、xls 文件等。因為文件具備攜帶方便、查閱直觀。

Python 作為膠水語言,搞定這些當(dāng)然不在話下。但在寫數(shù)據(jù)過程中,經(jīng)常因數(shù)據(jù)源中帶有中文漢字而報錯。最讓人頭皮發(fā)麻的編碼問題。

我先說下編碼相關(guān)的知識。編碼方式有很多種:UTF-8, GBK, ASCII 等。

ASCII 碼是美國在上個世紀(jì) 60 年代制定的一套字符編碼。主要是規(guī)范英語字符和二進制位之間的關(guān)系。英語詞匯組成簡單,由 26 個字母構(gòu)成。使用一個字節(jié)就能表示一個字母符號。外加各種符號,使用 128 個字符就滿足編碼要求。

不同國家有不同語言文字。同時,文字組成部分的數(shù)量相比英語字母要多很多。根據(jù)不完全統(tǒng)計,漢字的數(shù)量大約將近 10 萬個,日常所使用的漢字有 3000 個。顯然,ASCII 編碼無法滿足需求。所以漢字采用 GBK 編碼,使用兩個字節(jié)表示一個漢字。簡體中文的編碼方式是 GBK2312。

那 UTF-8 又是什么編碼?這要先說 Unicode 了。Unicode 目的是為了統(tǒng)一各種編碼。因為各國都各自的編碼方式。如果使用一種編碼編碼,使用另一種編碼解碼。這會造成出現(xiàn)亂碼的情況。但 Unicode 只是一個符號集,它只規(guī)定了符號的二進制代碼,卻沒有規(guī)定這個二進制代碼應(yīng)該如何存儲。UTF-8 就是在互聯(lián)網(wǎng)上使用最廣的一種 Unicode 的實現(xiàn)方式。

因此,如果我們要寫數(shù)據(jù)到文件中,***指定編碼形式為 UTF-8。

Python 標(biāo)準(zhǔn)庫中,有個名為 csv 的庫,專門處理 csv 的讀寫操作。具體使用實例如下:

 
 
 
 
  1. import csv
  2. import codecs
  3. # codecs 是自然語言編碼轉(zhuǎn)換模塊
  4. fileName = 'PythonBook.csv'
  5. # 指定編碼為 utf-8, 避免寫 csv 文件出現(xiàn)中文亂碼
  6. with codecs.open(fileName, 'w', 'utf-8') as csvfile:
  7.     # 指定 csv 文件的頭部顯示項
  8.     filednames = ['書名', '作者']
  9.     writer = csv.DictWriter(csvfile, fieldnames=filednames)
  10.     books = []
  11.     book = {
  12.         'title': '笑傲江湖',
  13.         'author': '金庸',
  14.     }
  15.     books.append(book)
  16.     writer.writeheader()
  17.     for book in books:
  18.         try:
  19.             writer.writerow({'書名':book['title'], '作者':book['author']})
  20.         except UnicodeEncodeError:
  21.             print("編碼錯誤, 該數(shù)據(jù)無法寫到文件中, 直接忽略該數(shù)據(jù)")

這種方式是逐行往 CSV 文件中寫數(shù)據(jù), 所以效率會比較低。如果想批量將數(shù)據(jù)寫到 CSV 文件中,需要用到 pandas 庫。

pandas 是第三方庫,所以使用之前需要安裝。通過 pip 方式安裝是最簡單、最方便的。

 
 
 
 
  1. pip install pandas

使用 pandas 批量寫數(shù)據(jù)的用法如下:

 
 
 
 
  1. import pandas as pd
  2. fileName = 'PythonBook.csv'
  3. number = 1
  4. books = []
  5. book = {
  6.     'title': '笑傲江湖',
  7.     'author': '金庸',
  8. }
  9. # 如果 book 條數(shù)足夠多的話,pandas 會每次往文件中寫 50 條數(shù)據(jù)。
  10. books.append(book)
  11. data = pd.DataFrame(books)
  12. # 寫入csv文件,'a+'是追加模式
  13. try:
  14.     if number == 1:
  15.         csv_headers = ['書名', '作者']
  16.         data.to_csv(fileName, header=csv_headers, index=False, mode='a+', encoding='utf-8')
  17.     else:
  18.         data.to_csv('fileName, header=False, index=False, mode='a+', encoding='utf-8')
  19.         number = number + 1
  20. except UnicodeEncodeError:
  21.     print("編碼錯誤, 該數(shù)據(jù)無法寫到文件中, 直接忽略該數(shù)據(jù)")

作者:極客猴,熱衷于 Python,目前擅長利用 Python 制作網(wǎng)絡(luò)爬蟲以及 Django 框架。


網(wǎng)頁標(biāo)題:用Python將數(shù)據(jù)寫到CSV文件
轉(zhuǎn)載注明:http://www.5511xx.com/article/copegoh.html