處理CSV文件

CSV文件是簡化的電子表格,保存爲純文本文件。

CSV文件中的每行代表電子表格中的一行,都好分割了該行中的單元格。

CSV文件是簡單的,缺少Excel電子表格的許多功能,但它是表示電子表格數據的直接方式。

CSV格式和它聲稱的完全一致:它就是一個文本文件,具有逗號分隔的值。

但並非CSV文件中的每個逗號,都表示兩個單元格之間的分界。

因爲split()方法不能處理CSV文件的轉義字符,所以使用CSV模塊讀寫CSV文件。


Reader對象

要用CSV模塊從CSV文件中讀取數據,需要創建一個Reader對象。

Reader對象迭代遍歷CSV文件中的每一行。

CSV模塊是python自帶的,不需要安裝,直接導入可用。

不能將文件名字字符串傳遞給csv.reader()函數。


樣例:

blob.png

>>> import csv
>>> file1=open('file1.csv')
>>> file1Reader=csv.reader(file1)
>>> file1Data=list(file1Reader)
>>> file1Data
[['1', '張三', '男', '28'], ['2', '李四', '男', '19'], ['3', '王五', '男', '25'], ['4', '趙六', '男', '35'], ['5', '田七', '男', '54']]
>>> file1Data[2][1]
'王五'
>>>


要取得行號,就使用Reader對象的line_num變量,它包含了當前行的編號。

Reader對象只能循環遍歷一次。要再次讀取CSV文件,必須調用csv.reader,創建一個對象。

>>> import csv
>>> file1=open('file1.csv')
>>> file1Reader=csv.reader(file1)
>>> for row in file1Reader:
...     print('Row #'+str(file1Reader.line_num)+' '+str(row))
...
Row #1 ['1', '張三', '男', '28']
Row #2 ['2', '李四', '男', '19']
Row #3 ['3', '王五', '男', '25']
Row #4 ['4', '趙六', '男', '35']
Row #5 ['5', '田七', '男', '54']
>>> for row in file1Reader:
...     print('Row #'+str(file1Reader.line_num)+' '+str(row))
...
>>>


Writer對象

Writer對象將數據寫入CSV文件。要創建一個Writer對象,就使用csv.writer()函數。

在windows上,需要爲open()函數的newline關鍵字參數傳入一個空字符串。

如果忘記設置newline關鍵字參數,CSV文件中的行距將有兩倍。

在CSV文件中使用雙引號,防止逗號被自動轉義。


樣例:

>>> import csv
>>> file1=open('file1.csv','w',newline='')
>>> file1Writer=csv.writer(file1)
>>> file1Writer.writerow(['1','Tom','male','22'])
15
>>> file1Writer.writerow(['2','Jack','male','29'])
16
>>> file1Writer.writerow(['3','Linda','female','37'])
19
>>> file1.close()

blob.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章