CSV

  • 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)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章