国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-15 21:39:30
字體:
供稿:網(wǎng)友

前言

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

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

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

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

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

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

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

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

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

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

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

import csvimport codecs# codecs 是自然語言編碼轉(zhuǎn)換模塊fileName = 'PythonBook.csv'# 指定編碼為 utf-8, 避免寫 csv 文件出現(xiàn)中文亂碼with codecs.open(fileName, 'w', 'utf-8') as csvfile: # 指定 csv 文件的頭部顯示項(xiàng) filednames = ['書名', '作者'] writer = csv.DictWriter(csvfile, fieldnames=filednames) books = [] book = { 'title': '笑傲江湖', 'author': '金庸', } books.append(book) writer.writeheader() for book in books: try: writer.writerow({'書名':book['title'], '作者':book['author']}) except UnicodeEncodeError: print("編碼錯(cuò)誤, 該數(shù)據(jù)無法寫到文件中, 直接忽略該數(shù)據(jù)")            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海门市| 本溪市| 县级市| 东源县| 新疆| 壤塘县| 饶阳县| 宣武区| 南宫市| 南和县| 鲁甸县| 南昌县| 高密市| 朝阳区| 乌审旗| 台安县| 西峡县| 响水县| 阳西县| 长乐市| 晋江市| 麦盖提县| 南投县| 长汀县| 丰镇市| 淅川县| 调兵山市| 榆林市| 伊金霍洛旗| 子洲县| 行唐县| 张家港市| 东城区| 泾源县| 花莲市| 崇左市| 南陵县| 麦盖提县| 鄱阳县| 罗甸县| 固阳县|