(Python基礎教程之十二)Python讀寫CSV文件

  1. Python基礎教程
  2. 在SublimeEditor中配置Python環境
  3. Python代碼中添加註釋
  4. Python中的變量的使用
  5. Python中的數據類型
  6. Python中的關鍵字
  7. Python字符串操做
  8. Python中的list操做
  9. Python中的Tuple操做
  10. Pythonmax()和min()–在列表或數組中查找最大值和最小值
  11. Python找到最大的N個(前N個)或最小的N個項目
  12. Python讀寫CSV文件
  13. Python中使用httplib2–HTTPGET和POST示例
  14. Python將tuple開箱爲變量或參數
  15. Python開箱Tuple–太多值沒法解壓
  16. Pythonmultidict示例–將單個鍵映射到字典中的多個值
  17. PythonOrderedDict–有序字典
  18. Python字典交集–比較兩個字典
  19. Python優先級隊列示例

學習在Python中使用CSV文件。CSV(逗號分隔值)格式是電子表格和數據庫中很是流行的導入和導出格式。Python語言包含該模塊,該模塊具備用於讀取和寫入CSV格式的數據的類。[](https://www.python.org/)csvhtml

目錄
使用csv.reader()
讀取CSV文件使用csv.DictReader讀取CSV
文件使用csv.writer()寫入CSV文件
引用
CSV方言
自定義CSV方言python

Reading CSV file with csv.reader()

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

Reading CSV file with csv.DictReader

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()

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 '\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。

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文件的示例。

學習愉快!

做者:分佈式編程
出處:https://zthinker.com/
若是你喜歡本文,請長按二維碼,關注 分佈式編程
.分佈式編程

相關文章
相關標籤/搜索