Python 的 CSV模塊的使用方法,包括,reader, writer, DictReader, DictWriter.register_dialect
一直非常喜歡python的csv模塊,簡單易用,經常在項目中使用,現在舉幾個例子說明一下。
參數表:
csvfile 需要是支持迭代(Iterator)的對象,并且每次調用next方法的返回值是字符串(string),通常的文件(file)對象,或者列表(list)對象都是適用的,如果是文件對象,打開是需要加"b"標志參數。dialect 編碼風格,默認為excel方式,也就是逗號(,)分隔,另外csv模塊也支持excel-tab風格,也就是制表符(tab)分隔。其它的方式需要自己定義,然后可以調用register_dialect方法來注冊,以及list_dialects方法來查詢已注冊的所有編碼風格列表。fmtparam 格式化參數,用來覆蓋之前dialect對象指定的編碼風格。
例子:
import csvreader = csv.reader(file('your.csv', 'rb'))for line in reader: PRint line
writer(csvfile[, dialect='excel'][, fmtparam])
參數表(略: 同reader, 見上)
例子:
import csvwriter = csv.writer(file('your.csv', 'wb'))writer.writerow(['Column1', 'Column2', 'Column3'])lines = [range(3) for i in range(5)]for line in lines: writer.writerow(line)1. 寫入并生成csv文件
代碼:
# coding: utf-8
import csv
csvfile = file('csv_test.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow(['姓名', '年齡', '電話'])
data = [
('小河', '25', '1234567'),
('小芳', '18', '789456')
]
writer.writerows(data)
csvfile.close()
wb中的w表示寫入模式,b是文件模式
寫入一行用writerow
多行用writerows
2. 讀取csv文件
代碼:
# coding: utf-8
import csv
csvfile = file('csv_test.csv', 'rb')
reader = csv.reader(csvfile)
for line in reader:
print line
csvfile.close()
運行結果:
root@he-desktop:~/python/example# python read_csv.py
['/xe5/xa7/x93/xe5/x90/x8d', '/xe5/xb9/xb4/xe9/xbe/x84', '/xe7/x94/xb5/xe8/xaf/x9d']
['/xe5/xb0/x8f/xe6/xb2/xb3', '25', '1234567']
['/xe5/xb0/x8f/xe8/x8a/xb3', '18', '789456']
打印發行日期及標題,逐行處理:
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)?
新聞熱點
疑難解答