(Python基礎教程之十二)Python讀寫CSV檔案
學習在使用CSV檔案。CSV(逗號分隔值)格式是電子表格和資料庫中非常流行的匯入和匯出格式。Python語言包含該模組,該模組具有用於讀取和寫入CSV格式的資料的類。
目錄
Reading CSV file with csv.reader()
該方法返回一個reader物件,該物件將遍歷給定CSV檔案中的行。
假設我們有以下numbers.csv包含數字的檔案:
6,5,3,9,8,6,7
以下python指令碼從此CSV檔案讀取資料。
#!/usr/bin/python3
import csv
f = open('numbers.csv', 'r')
with f:
reader = csv.reader(f)
for row in reader:
print(row)
在上面的程式碼示例中,我們開啟了numbers.csv以讀取並使用csv.reader()方法載入資料。
現在,假設CSV檔案將使用其他定界符。(嚴格來說,這不是CSV檔案,但是這種做法很常見。)例如,我們有以下items.csv檔案,其中的元素由豎線字元(|)分隔:
pen|table|keyboard
以下指令碼從items.csv檔案讀取資料。
#!/usr/bin/python3
import csv
f = open('items.csv', 'r')
with f:
reader = csv.reader(f, delimiter="|")
for row in reader:
for e in row:
print(e)
我們delimiter在csv.reader()方法中使用引數指定新的分隔字元。
Reading CSV file with csv.DictReader
該班的運作就像一個普通的讀者,但讀入字典中的資訊對映。
字典的鍵可以與fieldnames引數一起傳遞,也可以從CSV檔案的第一行推斷出來。
我們有以下values.csv檔案:
min, avg, max
1, 5.5, 10
第一行代表字典的鍵,第二行代表值。
#!/usr/bin/python3
import csv
f = open('values.csv', 'r')
with f:
reader = csv.DictReader(f)
for row in reader:
print(row)
上面的python指令碼使用讀取values.csv檔案中的值csv.DictReader。
這是示例的輸出。
$ ./read_csv3.py
{' max': ' 10', 'min': '1', ' avg': ' 5.5'}
Writing CSV file using csv.writer()
該方法返回一個writer物件,該物件負責將使用者資料轉換為給定檔案狀物件上的定界字串。
#!/usr/bin/python3
import csv
nms = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]
f = open('numbers2.csv', 'w')
with f:
writer = csv.writer(f)
for row in nms:
writer.writerow(row)
該指令碼將數字寫入numbers2.csv檔案。該writerow()方法將一行資料寫入指定的檔案。
該指令碼將產生以下檔案(numbers2.csv):
1,2,3,4,5,6 7,8,9,10,11,12
可以一次寫入所有資料。該writerows()方法將所有給定的行寫入CSV檔案。
下一個程式碼示例將Python列表寫入numbers3.csv檔案。該指令碼將三行數字寫入檔案。
#!/usr/bin/python3
import csv
nms = [[1, 2, 3], [7, 8, 9], [10, 11, 12]]
f = open('numbers3.csv', 'w')
with f:
writer = csv.writer(f)
writer.writerows(nms)
執行上述程式時,以下輸出將寫入numbers3.csv檔案:
1,2,3 7,8,9 10,11,12
Quoting
可以在CSV檔案中引用單詞。Python CSV模組中有四種不同的引用模式:
- QUOTE_ALL —引用所有欄位
- QUOTE_MINIMAL-僅引用那些包含特殊字元的欄位
- QUOTE_NONNUMERIC —引用所有非數字欄位
- QUOTE_NONE —不引用欄位
在下一個示例中,我們向items2.csv檔案寫入三行。所有非數字欄位都用引號引起來。
#!/usr/bin/python3
import csv
f = open('items2.csv', 'w')
with f:
writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
writer.writerows((["coins", 3], ["pens", 2], ["bottles", 7]))
該程式將建立以下items2.csv檔案。引用專案名稱,不引用數字表示的數量。
"coins",3
"pens",2
"bottles",7
CSV Dialects
儘管CSV格式是一種非常簡單的格式,但還是有許多差異,例如不同的定界符,換行或引號字元。因此,有不同的CSV方言可用。
下一個程式碼示例將列印可用的方言及其特徵。
#!/usr/bin/python3
import csv
names = csv.list_dialects()
for name in names:
print(name)
dialect = csv.get_dialect(name)
print(repr(dialect.delimiter), end=" ")
print(dialect.doublequote, end=" ")
print(dialect.escapechar, end=" ")
print(repr(dialect.lineterminator), end=" ")
print(dialect.quotechar, end=" ")
print(dialect.quoting, end=" ")
print(dialect.skipinitialspace, end=" ")
print(dialect.strict)
在csv.list_dialects()返回方言名稱的列表和csv.get_dialect()方法返回與方言名稱相關聯的方言。
$ ./dialects.py
excel
',' 1 None 'rn' " 0 0 0
excel-tab
't' 1 None 'rn' " 0 0 0
unix
',' 1 None 'n' " 1 0 0
程式將列印此輸出。有三個內建的方言excel,excel-tab和unix。
Custom CSV Dialect
在本教程的最後一個示例中,我們將建立一個自定義方言。使用該csv.register_dialect()方法建立自定義方言。
#!/usr/bin/python3
import csv
csv.register_dialect("hashes", delimiter="#")
f = open('items3.csv', 'w')
with f:
writer = csv.writer(f, dialect="hashes")
writer.writerow(("pencils", 2))
writer.writerow(("plates", 1))
writer.writerow(("books", 4))
該程式使用(#)字元作為分隔符。使用方法中的dialect選項指定方言csv.writer()。
該程式將產生以下檔案(items3.csv):
pencils#2
plates#1
books#4
在本教程中,我們探索了Python csv模組,並介紹了一些在python中讀寫CSV檔案的示例。
學習愉快!
作者:
出處:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2825417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python 寫入CSV檔案Python
- Pandas 基礎 (4) - 讀 / 寫 Excel 和 CSV 檔案Excel
- python讀寫csvPython
- Python入門教程之檔案讀寫操作知識Python
- Python 檔案讀寫(Python IO)Python
- Python 讀寫檔案Python
- Python——檔案讀寫Python
- 「Python」:檔案讀寫Python
- C語言讀取寫入CSV檔案 [一]基礎篇C語言
- python 使用字典讀取CSV檔案Python
- python生成CSV檔案Python
- python讀寫excel檔案PythonExcel
- python檔案讀寫操作Python
- 『無為則無心』Python基礎 — 41、Python中檔案的讀寫操作(一)Python
- 『無為則無心』Python基礎 — 42、Python中檔案的讀寫操作(二)Python
- 基於 java 註解的 csv 檔案讀寫框架Java框架
- Python中的檔案讀寫Python
- python 基礎之檔案Python
- Python基礎——檔案操作Python
- Python 簡明教程 --- 24,Python 檔案讀寫Python
- (Python基礎教程之七)Python字串操作Python字串
- 使用 Python 處理 CSV 檔案Python
- csv檔案的寫入和讀取
- Python檔案讀寫、StringIO和BytesIOPython
- python config配置檔案的讀寫Python
- Python之檔案讀寫小練Python
- python學習之讀寫檔案Python
- Python檔案讀寫--錯誤一Python
- Python:讀寫檔案(I/O) | 組織檔案Python
- 基於Python的介面自動化實戰-基礎篇之讀寫配置檔案Python
- Python基礎知識之檔案的讀取操作Python
- Python基礎入門(9)- Python檔案操作Python
- Python 高階程式設計:深入解析 CSV 檔案讀取Python程式設計
- 基於Python的介面自動化-讀寫excel檔案PythonExcel
- Python讀寫txt檔案、轉換csv檔案與pandas條件計數、求和的綜合運用Python
- Python合併多個csv檔案Python
- Python中的檔案的讀寫操作Python
- python檔案建立、讀取和寫入Python