CSV文件簡介
CSV(Comma-Separated Values),逗號分隔值 CSV是一個被行分隔符、列分隔符劃分成行和列的文本文件.沒有指定字符編碼. 詳情參看 RFC 4180 :https://www.ietf.org/html/rfc4180 行分隔符爲\r\n,最後一行可以沒有換行符 列分隔符常爲逗號或製表符 每一行數據稱爲一條記錄(record) 一行中被列分隔符分成的一個個獨立數據,稱爲一個字段 字段可以使用雙引號括起來,也可以不使用.(有些程序會自動幫你替換) 如果字段中出現了雙引號、逗號、換行符必須使用雙引號括起來. 如果字段的值是雙引號,使用兩個雙引號表示一個轉義.("""") 表頭可選,和字段列對齊即可.
手動生成CSV文件
from pathlib import Path p = Path('G:/csv/a.csv') # CSV文件路徑 parent = p.parent if not parent.exists(): # 判斷目錄是否存在 parent.mkdir(parents=True) # "\"反斜槓此處表示折行,這樣保證第一行不爲空行 csv_body = """\ id,name,age,comment 1,tom,18,"i'm 18" 2,jerry,"this is a ""test"" string." 3,sadan,"中國 國慶 " """ p.write_text(csv_body)
csv模塊
兩個函數:
reader(fileobj,dialect='excel',**fmtparams) 返回DictReader的實例,是個行迭代器 delimiter 列分隔符,缺省值爲逗號 lineterminator 行分隔符,缺省值爲\r\n quotechar 字段的引用符號,缺省爲'"',雙引號 雙引號的處理: doublequote 雙引號的處理,默認爲True. 如果"和quotechar爲同一個,True則使用2個雙引號表示 False表示使用轉義字符作爲雙引號的前綴.例:"\"" escapechar 設定轉義字符,默認爲None.默認轉義符爲"\" quoting 指定雙引號的規則 QUOTE_ALL 所有字段都有加引號 QUOTE_MINIMAL 特殊字符字段才加引號 QUOTE_NONNUMERIC 非數字字段需要加引號 QUOTE_NONE 都不使用引號
writer(csvfileobj, dialect='excel', **fmtparams) 返回DictWriter的實例 主要方法有: writerow(iterable) 將一個可迭代對象中所有元素寫在一行 writerows(iterable) 將一個可迭代對象的多個元素寫入多行 示例: from pathlib import Path import csv p = Path('G:/csv/b.csv') row = [1,'one',2,'two'] row = ['1','one','2','two'] rows = [ (3,'tom',4,'jerry'), (5,'ls\t','6','ss') ] with open(str(p),'w') as f: writer = csv.writer(f) print(type(writer)) # writer.writerow(rows) # 將多個元組寫入一行 # writer.writerows(row) # 將可迭代對象元素寫成多行 writer.writerow(row) writer.writerows(rows) with open(str(p),'r') as f: reader = csv.reader(f) print(type(reader)) for line in reader: print(line)