Python按指定列讀取csv檔案及寫檔案時的隔行問題
阿新 • • 發佈:2019-01-01
程式設計環境:Python3.5
先講一下如何讀寫csv檔案:
import csv csvfile=open('train.csv','r') #Python3.5這裡不要用rb reader=csv.reader(csvfile) train=[] for line in reader: train.append(line) csvfile.close() csvfile = open('csv_test.csv','w') #同樣Python3.5這裡不要用wb writer = csv.writer(csvfile) for line in train: writer.writerow(line) csvfile.close()
這樣便可以讀寫CSV檔案了,但寫入CSV檔案時會出現隔行問題,如下圖:
解決方法:
將csvfile=open('csv_test.csv','w')這行程式碼改為csvfile=open('csv_test.csv','w',newline='')即可。接下來說明如何讀寫指定行列的資料。
舉個例子:
這是mnist資料集的部分資料,我的目的是讀取第二行第二列之後的資料存入列表中,並讀取第一列的所有資料存入另一個列表。即先去除第一行標籤,再按列儲存到不同列表。
具體程式碼如下:
import csv csvfile=open('train.csv','r') reader=csv.reader(csvfile) i=0 train=[] label=[] for line in reader: if i<1: i+=1 #這裡的作用是把第一行去掉 else: train.append(line[1:]) #讀取第二列以後的資料 label.append(line[0]) #讀取第一列的資料 csvfile.close() #以下為把train,label的內容寫進csv檔案,驗證讀取是否正確 csvfile = open('csv_test.csv','w',newline='') writer = csv.writer(csvfile) for line in train: writer.writerow(line) csvfile.close() csvfile = open('csv_testt.csv', 'w',newline='') writer = csv.writer(csvfile) for line in label: writer.writerow(line) csvfile.close()
結果展示:
csv_test.csv的資料如下,即把第一行第一列剔除後的結果:
csv_testt.csv的資料如下,即把第一行剔除後選取第一列的結果:
這裡只是舉個例子,當然可以選取其他行列,看自己需求修改相應程式碼即可。