學習在Python中使用CSV文件。CSV(逗號分隔值)格式是電子表格和數據庫中很是流行的導入和導出格式。Python語言包含該模塊,該模塊具備用於讀取和寫入CSV格式的數據的類。[](https://www.python.org/)csvhtml
目錄
使用csv.reader()
讀取CSV文件使用csv.DictReader讀取CSV
文件使用csv.writer()寫入CSV文件
引用
CSV方言
自定義CSV方言python
該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()方法加載數據。post
如今,假設CSV文件將使用其餘定界符。(嚴格來講,這不是CSV文件,可是這種作法很常見。)例如,咱們有如下items.csv文件,其中的元素由豎線字符(|)分隔:學習
pen|table|keyboard
如下腳本從items.csv文件讀取數據。spa
#!/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()方法中使用參數指定新的分隔字符。unix
該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'}
該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
能夠在CSV文件中引用單詞。Python CSV模塊中有四種不一樣的引用模式:
在下一個示例中,咱們向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格式是一種很是簡單的格式,但仍是有許多差別,例如不一樣的定界符,換行或引號字符。所以,有不一樣的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 '\r\n' " 0 0 0 excel-tab '\t' 1 None '\r\n' " 0 0 0 unix ',' 1 None '\n' " 1 0 0
程序將打印此輸出。有三個內置的方言excel,excel-tab和unix。
在本教程的最後一個示例中,咱們將建立一個自定義方言。使用該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文件的示例。
學習愉快!
做者:分佈式編程
出處:https://zthinker.com/
若是你喜歡本文,請長按二維碼,關注 分佈式編程
.