Python程式中用csv模組來操作csv檔案的基本使用教程

來源:互聯網
上載者:User
CSV全稱為“Comma Separated Values”,是一種格式化的檔案,由行和列組成,分隔字元可以根據需要來變化。
如下面為一csv檔案:

Title,Release Date,DirectorAnd Now For Something Completely Different,1971,Ian MacNaughtonMonty Python And The Holy Grail,1975,Terry Gilliam and Terry JonesMonty Python's Life Of Brian,1979,Terry JonesMonty Python Live At The Hollywood Bowl,1982,Terry HughesMonty Python's The Meaning Of Life,1983,Terry Jones

csv可以比較方便的在不同應用之間遷移資料。可以將資料大量匯出為csv格式,然後倒入到其他應用程式中。很多應用中需要匯出報表,也通常用csv格式匯出,然後用Excel工具進行後續編輯。

列印發行日期及標題,逐行處理:

for line in open("samples/sample.csv"):  title, year, director = line.split(",")  print year, title

使用csv模組處理:

import csvreader = csv.reader(open("samples/sample.csv"))for title, year, director in reader:  print year, title

改變分隔字元

建立一csv.excel的子類,並修改分隔字元為”;”

# File: csv-example-2.pyimport csvclass SKV(csv.excel):  # like excel, but uses semicolons  delimiter = ";" csv.register_dialect("SKV", SKV)reader = csv.reader(open("samples/sample.skv"), "SKV")for title, year, director in reader:  print year, title

如果僅僅僅是改變一兩個參數,則可以直接在reader參數中設定,如下:

# File: csv-example-3.py import csv reader = csv.reader(open("samples/sample.skv"), delimiter=";") for title, year, director in reader:  print year, title

將資料存為CSV格式

通過csv.writer來產生一csv檔案。

# File: csv-example-4.py import csvimport sys data = [  ("And Now For Something Completely Different", 1971, "Ian MacNaughton"),  ("Monty Python And The Holy Grail", 1975, "Terry Gilliam, Terry Jones"),  ("Monty Python's Life Of Brian", 1979, "Terry Jones"),  ("Monty Python Live At The Hollywood Bowl", 1982, "Terry Hughes"),  ("Monty Python's The Meaning Of Life", 1983, "Terry Jones")] writer = csv.writer(sys.stdout) for item in data:  writer.writerow(item)

執行個體

下面我們來看一個比較完整的例子,代碼說明在注釋中:

import csv# dialect是訪問csv檔案時需要指定的參數之一,用來確定csv檔案的資料格式# 下面這個函數列舉系統支援的dialect有哪些,預設值是'excel',使用者也可# 以從Dialect派生一個類,使用該類的執行個體作為dialect參數。print csv.list_dialects()def test_writer():  # csv檔案必須以二進位方式open  with open('eggs.csv', 'wb') as csvfile:    spamwriter = csv.writer(csvfile)    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])def test_reader():  with open('eggs.csv', 'rb') as csvfile:    spamreader = csv.reader(csvfile)    for row in spamreader:      print row# sniffer 用來推斷csv檔案的格式,不是很準確def test_sniffer():  with open('eggs.csv', 'wb') as csvfile:    spamwriter = csv.writer(csvfile, delimiter=' ')    spamwriter.writerow(['Spam'] * 2 + ['Baked Beans'])    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])  # 通常你需要指定與寫入者相同的檔案格式才能正確的讀取資料  with open('eggs.csv', 'rb') as csvfile:    spamreader = csv.reader(csvfile, delimiter=' ')    for row in spamreader:      print ', '.join(row)  # 如果不知道檔案格式,sniffer就可以派上用場了  with open('eggs.csv', 'rb') as csvfile:    # 用sniffer推斷檔案格式,從而得到dialect    dialect = csv.Sniffer().sniff(csvfile.read(1024))    print dialect.delimiter, dialect.quotechar    # 檔案重新移動到頭部    csvfile.seek(0)    # 用推斷出來的dialect建立reader    reader = csv.reader(csvfile, dialect)    for row in reader:      print ', '.join(row)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.