Python CSV模塊簡介

CSV

csv文件格式是一種通用的電子表格和數據庫導入導出格式。最近我調用RPC處理服務器數據時,常常須要將數據作個存檔便使用了這一方便的格式。html

簡介

Python csv模塊封裝了經常使用的功能,使用的簡單例子以下:python

# 讀取csv文件
import csv
with 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 csv
with open('some.csv', 'wb') as f:      # 採用b的方式處理能夠省去不少問題
    writer = csv.writer(f)
    writer.writerows(someiterable)

默認的狀況下, 讀和寫使用逗號作分隔符(delimiter),用雙引號做爲引用符(quotechar),當遇到特殊狀況是,能夠根據須要手動指定字符, 例如:數據庫

import csv
with open('passwd', 'rb') as f:
    reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
    for row in reader:
        print row

上述示例指定冒號做爲分隔符,而且指定quote方式爲不引用。這意味着讀的時候都認爲內容是不被默認引用符(")包圍的。quoting的可選項爲: QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_NONE.服務器

有點須要注意的是,當用writer寫數據時, None 會被寫成空字符串,浮點類型會被調用 repr() 方法轉化成字符串。因此非字符串類型的數據會被 str() 成字符串存儲。因此當涉及到unicode字符串時,能夠本身手動編碼後存儲或者使用csv提供的 UnicodeWriter, 具體可參見這裏編碼

字典方式地讀寫

csv還提供了一種相似於字典方式的讀寫,方式以下:rest

格式以下:excel

class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

其中fieldnames指定字典的key值,若是reader裏沒有指定那麼默認第一行的元素,在writer裏必定要指定這個。code

使用示例htm

# 讀
>>> import csv
>>> with open('names.csv') as csvfile:
...     reader = csv.DictReader(csvfile)
...     for row in reader:
...         print(row['first_name'], row['last_name'])
...
Baked Beans
Lovely Spam
Wonderful Spam


# 寫

import csv
with open('names.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

其它

csv模塊還涉及了其它的概念,好比 Dialects, 還提供了供錯誤處理的 exception csv.Error 等,由於實際使用較少及就不累贅在此。更多參考官方文檔unicode

參考資料

相關文章
相關標籤/搜索