7.3. 存取CSV檔
檔案如CSV檔、試算表及資料庫通常會使用分隔符號,例如:「,」(逗號)、「|」或「\t」等分隔符號,作為檔案交換的格式。所以,可以使用標準 csv 模組來存取csv檔。
使用 csv 模組
使用 import 關鍵字匯入 csv 模組:
import csv
存取 csv 檔 - 使用串列
下列為使用 csv 模組讀取一個 csv 檔為串列的範例:
- 參考檔案:csv_reader_with.py
# 匯入 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_writer_with.py
# 匯入 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_reader_with2.py
# 匯入 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_writer_with2.py
# 匯入 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著, 賴屹民譯, 歐萊禮