python讀寫csv檔案

2021-09-11 06:45:24 字數 3215 閱讀 5773

**:吳下_阿蒙

csv釋義

逗號分隔值(comma-separated values,csv,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存**資料(數字和文字)。純文字意味著該檔案是乙個字串行,不含必須像二進位制數字那樣被解讀的資料。csv檔案由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其它字元或字串,最常見的是逗號或製表符。通常,所有記錄都有完全相同的字段序列。通常都是純文字檔案。建議使用wordpad或是記事本(note)來開啟,再則先另存新檔後用excel開啟,也是方法之一。

讀取csv檔案

reader(filename),可以使用reader()方法來建立乙個物件從csv檔案中讀取資料。

官方文件:csv.reader(csvfile, dialect='excel', **fmtparams)  //csvfile是任何可以迭代的物件(如果是檔案物件則用newline=''來開啟它),dialect翻譯為方言用於定製解析器來解析資料,**fmtparams為解析器引數

讀檔案時,輸入資料的每一行都會解析,並返回乙個列表

建立乙個csv檔案寫入如下資料,python讀取:

寫csv檔案writer(filename),使用writer方法來寫資料

csv.writer(csvfile, dialect='excel', **fmtparams)  //引數與讀完全基本相同

寫一段**來測試

import csv

with open('test1.csv','w',newline='') as f:

writer = csv.writer(f)

writer.writerow(('name', 'tel', 'address', 'age'))

writer.writerow(('zhang', 15111111111, 'beijing', 33))

writer.writerow(('li', 13822222222, 'wuhan', 28))

writer.writerow(('liu', 15933333333, 'hainan', 25))

with open('test1.csv','r',newline='') as f:

reader = csv.reader(f)

for i in reader:

print(i)

結果:

['name', 'tel', 'address', 'age']

['zhang', '15111111111', 'beijing', '33']

['li', '13822222222', 'wuhan', '28']

['liu', '15933333333', 'hainan', '25']

發現結果與輸入不同,預設引號模式的原因

寫檔案時可用quoting來設定引號模式

預設為:writer = csv.writer(f,quoting=csv.quote_nonnumeric)  //非數字加引號

可改為:

quote_all:所有欄位加引號

quote_minimal:特殊欄位加引號

quote_none:都不加引號

方言

用於定製解析器,無需將各個引數單獨傳入閱讀器和書寫器,可以組成一起構成乙個方言物件

標準庫包括兩個方言:excel和excel-tabs,預設為excel

csv方言引數:

屬性預設值

含義 delimiter , 字段分隔符 doublequote true 控制quotechar例項是否成對 escapechar none 指示乙個轉義序列 lineterminator \r\n 書寫器使用這個結束一行 quotechar " 用來包圍含特殊字元的字段 quoting quote_minimal 控制引號行為 skipinitialspace false 忽略字元定界符前的空白符

將」行「轉換為字典

dictreader和dictwriter類將行轉化為字典而非行

官方文件:class csv.dictreader(csvfile, fieldnames=none, restkey=none, restval=none, dialect='excel', *args, **kwds)

引數說明:

fieldnames:字典的鍵,預設為第一行資料

restkey:若所讀行欄位多餘給出的鍵個數,剩餘鍵由restkey給出

restkey:若所讀行欄位少於給出的鍵個數,剩餘值由restval給出

例如上述test1.csv檔案

with open('test1.csv','r',newline='') as f:

reader = csv.dictreader(f)

for i in reader:

print(i)

結果:

dictwriter類似dictreader,提供乙個列表作為鍵

writer = csv.dictwriter(f,list)

官方文件:class csv.dictwriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

更多詳細解釋可訪問python標準庫

Python讀寫csv檔案

1.寫入並生成csv檔案 coding utf 8 import csv csvfile file csv test.csv wb writer csv.writer csvfile writer.writerow 姓名 年齡 data 小河 25 1234567 小芳 18 789456 writ...

python 讀寫csv檔案

1.忽略第一行標題的基礎上 python2.7 coding utf 8 import csv csv reader csv.reader open r c users thinkpad desktop tweets.csv for row in csv reader 條件語句忽略第一行檔案資料 i...

python 讀寫csv檔案

1.將dataframe資料寫入csv 1 用 csv包一行一行的寫入 import csv python2可以用file替代open with open test.csv w as csvfile writer csv.writer csvfile 先寫入columns name writer.w...