7.3. 存取CSV檔


檔案如CSV檔、試算表及資料庫通常會使用分隔符號,例如:「,」(逗號)、「|」或「\t」等分隔符號,作為檔案交換的格式。所以,可以使用標準 csv 模組來存取csv檔。

使用 csv 模組

使用 import 關鍵字匯入 csv 模組:

import csv

存取 csv 檔 - 使用串列

下列為使用 csv 模組讀取一個 csv 檔為串列的範例:

# 匯入 csv 模組
import csv

# 讀取 csv 模組
with open('villains.csv', 'rt') as f:
    input = csv.reader(f)

    villains = []
    for s in input:
        villains.append(s)

    print(villains)


# 執行結果
[['Doctor', 'No'], ['Rosa', 'Klebb'], ['Mister', 'Big'], ['Auric', 'Goldfinger'], ['Ernst', 'Blofeld']]

下列為使用 csv 模組儲存一個串列到 csv 檔的範例:

# 匯入 csv 模組
import csv

# 定義變數
villains = [['Doctor', 'No'],
            ['Rosa', 'Klebb'],
            ['Mister', 'Big'],
            ['Auric', 'Goldfinger'],
            ['Ernst', 'Blofeld']]

# 使用 csv 模組
with open('villains.csv', 'wt') as f:
    csv_output = csv.writer(f)

    for s in villains:
        csv_output.writerow(s)


# 執行結果
# villains.csv
Doctor,No
Rosa,Klebb
Mister,Big
Auric,Goldfinger
Ernst,Blofeld

存取 csv 檔 - 使用字典

下列為使用 csv 模組讀取一個 csv 檔為字典的範例:

# 匯入 csv 模組
import csv

# 讀取 csv 模組
with open('villains.csv', 'rt') as f:
    csv_input = csv.DictReader(f, fieldnames=['first', 'last'])

    villains = []
    for s in csv_input:
        villains.append(dict(s))

    print(villains)


# 執行結果
[{'first': 'Doctor', 'last': 'No'},
{'first': 'Rosa', 'last': 'Klebb'},
{'first': 'Mister', 'last': 'Big'},
{'first': 'Auric', 'last': 'Goldfinger'},
{'first': 'Ernst', 'last': 'Blofeld'}]

下列為使用 csv 模組儲存一個字典到 csv 檔的範例:

# 匯入 csv 模組
import csv

# 定義變數
villains = [{'first': 'Doctor', 'last': 'No'},
            {'first': 'Rosa', 'last': 'Klebb'},
            {'first': 'Mister', 'last': 'Big'},
            {'first': 'Auric', 'last': 'Goldfinger'},
            {'first': 'Ernst', 'last': 'Blofeld'}]

# 使用 csv 模組
with open('villains.csv', 'wt') as f:
    csv_output = csv.DictWriter(f, ['first', 'last'])

    csv_output.writeheader()
    for s in villains:
        csv_output.writerow(s)


# 執行結果
# villains.csv
first,last
Doctor,No
Rosa,Klebb
Mister,Big
Auric,Goldfinger
Ernst,Blofeld

參考資料

  • Zen of Pyton
  • Python自動化的樂趣, 第十四章, Al Sweigart 著、H&C 譯, 碁峰
  • Python編程入門第3版(簡), 第八章, Toby Donaldson著, 人民郵電出版社
  • 精通Python, 第八章, Bill Lubanovic著, 賴屹民譯, 歐萊禮

results matching ""

    No results matching ""