亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用Python如何將數(shù)據(jù)寫(xiě)到CSV文件中

 更新時(shí)間:2018年06月05日 10:20:28   作者:極客猴  
在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫(xiě)書(shū)到csv文件中。下面這篇文章主要給大家介紹了關(guān)于利用Python如何將數(shù)據(jù)寫(xiě)到CSV文件中的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

我們從網(wǎng)上爬取數(shù)據(jù),最后一步會(huì)考慮如何存儲(chǔ)數(shù)據(jù)。如果數(shù)據(jù)量不大,往往不會(huì)選擇存儲(chǔ)到數(shù)據(jù)庫(kù),而是選擇存儲(chǔ)到文件中,例如文本文件、CSV 文件、xls 文件等。因?yàn)槲募邆鋽y帶方便、查閱直觀。

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

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

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

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

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

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

Python 標(biāo)準(zhǔn)庫(kù)中,有個(gè)名為 csv 的庫(kù),專(zhuān)門(mén)處理 csv 的讀寫(xiě)操作。

Python csv模塊封裝了常用的功能,使用的簡(jiǎn)單例子如下:

# 讀取csv文件
import csv
with open('some.csv', 'rb') as f: # 采用b的方式處理可以省去很多問(wèn)題
reader = csv.reader(f)
for row in reader:
# do something with row, such as row[0],row[1]


import csv
with open('some.csv', 'wb') as f: # 采用b的方式處理可以省去很多問(wèn)題
writer = csv.writer(f)
writer.writerows(someiterable)

具體使用實(shí)例如下:

import csv
import codecs
# codecs 是自然語(yǔ)言編碼轉(zhuǎn)換模塊

fileName = 'PythonBook.csv'

# 指定編碼為 utf-8, 避免寫(xiě) csv 文件出現(xiàn)中文亂碼
with codecs.open(fileName, 'w', 'utf-8') as csvfile:
 # 指定 csv 文件的頭部顯示項(xiàng)
 filednames = ['書(shū)名', '作者']
 writer = csv.DictWriter(csvfile, fieldnames=filednames)

 books = []
 book = {
 'title': '笑傲江湖',
 'author': '金庸',
 }
 books.append(book)

 writer.writeheader()
 for book in books:
 try:
 writer.writerow({'書(shū)名':book['title'], '作者':book['author']})
 except UnicodeEncodeError:
 print("編碼錯(cuò)誤, 該數(shù)據(jù)無(wú)法寫(xiě)到文件中, 直接忽略該數(shù)據(jù)")

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

pandas 是第三方庫(kù),所以使用之前需要安裝。通過(guò) pip 方式安裝是最簡(jiǎn)單、最方便的。
pip install pandas

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

import pandas as pd

fileName = 'PythonBook.csv'
number = 1

books = []
book = {
 'title': '笑傲江湖',
 'author': '金庸',
}
# 如果 book 條數(shù)足夠多的話,pandas 會(huì)每次往文件中寫(xiě) 50 條數(shù)據(jù)。
books.append(book)

data = pd.DataFrame(books)
# 寫(xiě)入csv文件,'a+'是追加模式
try:
 if number == 1:
 csv_headers = ['書(shū)名', '作者']
 data.to_csv(fileName, header=csv_headers, index=False, mode='a+', encoding='utf-8')
 else:
 data.to_csv('fileName, header=False, index=False, mode='a+', encoding='utf-8')
 number = number + 1
except UnicodeEncodeError:
 print("編碼錯(cuò)誤, 該數(shù)據(jù)無(wú)法寫(xiě)到文件中, 直接忽略該數(shù)據(jù)")

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • python結(jié)合opencv實(shí)現(xiàn)人臉檢測(cè)與跟蹤

    python結(jié)合opencv實(shí)現(xiàn)人臉檢測(cè)與跟蹤

    在Python下用起來(lái)OpenCV很爽,代碼很簡(jiǎn)潔,很清晰易懂。使用的是Haar特征的分類(lèi)器,訓(xùn)練之后得到的數(shù)據(jù)存在一個(gè)xml中。下面我們就來(lái)詳細(xì)談?wù)劇?/div> 2015-06-06
  • PyQt5實(shí)現(xiàn)從主窗口打開(kāi)子窗口的方法

    PyQt5實(shí)現(xiàn)從主窗口打開(kāi)子窗口的方法

    今天小編就為大家分享一篇PyQt5實(shí)現(xiàn)從主窗口打開(kāi)子窗口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 如何用Python進(jìn)行時(shí)間序列分解和預(yù)測(cè)

    如何用Python進(jìn)行時(shí)間序列分解和預(yù)測(cè)

    這篇文章主要介紹了如何用Python進(jìn)行時(shí)間序列分解和預(yù)測(cè),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • Pycharm自動(dòng)添加文件頭注釋和函數(shù)注釋參數(shù)的方法

    Pycharm自動(dòng)添加文件頭注釋和函數(shù)注釋參數(shù)的方法

    這篇文章主要介紹了Pycharm自動(dòng)添加文件頭注釋和函數(shù)注釋參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析

    Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析

    這篇文章主要介紹了Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python求質(zhì)數(shù)列表的例子

    python求質(zhì)數(shù)列表的例子

    今天小編就為大家分享一篇python求質(zhì)數(shù)列表的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python 將字符串完成特定的向右移動(dòng)方法

    python 將字符串完成特定的向右移動(dòng)方法

    今天小編就為大家分享一篇python 將字符串完成特定的向右移動(dòng)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • python如何停止遞歸

    python如何停止遞歸

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python停止遞歸的方法和相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。
    2020-09-09
  • 如何用pandas處理hdf5文件

    如何用pandas處理hdf5文件

    這篇文章主要介紹了如何用pandas處理hdf5文件,幫助大家更好的理解和學(xué)習(xí)使用python進(jìn)行數(shù)據(jù)處理,感興趣的朋友可以了解下
    2021-03-03
  • Python函數(shù)__new__及__init__作用及區(qū)別解析

    Python函數(shù)__new__及__init__作用及區(qū)別解析

    這篇文章主要介紹了Python函數(shù)__new__及__init__作用及區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論