python使用writerows寫csv檔案產生多餘空行
阿新 • • 發佈:2019-02-07
初次接觸python,學藝不精,第一次實戰寫一個文字處理的小程式時便遇到了頭疼的問題。
先看程式碼:
with open('E:\\test.csv','wt')as fout:
cout=csv.DictWriter(fout,list_attrs_head )#list_attrs_head頭屬性列表
cout.writeheader()
cout.writerows(list_words)
生成的.CSV檔案每兩行之間都會多出一行空格(如下圖),具體原因可參看點選開啟連結
上面連結中的這位大神原因和方法都寫得比較好,開始我是按照連結中的方法修改,
將with open(path,'wt')as fout改為with open(path,'wb')as fout
但一執行卻報出這樣的錯誤:TypeError: a bytes-like object is required, not 'str' ,是因為我寫入的都是字串,所以會報錯,按要求改成位元組可能會成功,沒有再試
最後想到了一個比較簡單原始的方法,就是再將生成好的.csv檔案以文字方式讀出,並判斷是否是空行,若是空行就直接捨棄即可。
輸出沒有空行的.csv檔案完整程式碼為:
執行一下,結果如下:with open('E:\\test.csv','wt')as fout: #生成csv檔案,有空行 cout=csv.DictWriter(fout,list_attrs_head ) cout.writeheader() cout.writerows(list_words) with open('E:\\test.csv','rt')as fin: #讀有空行的csv檔案,捨棄空行 lines='' for line in fin: if line!='\n': lines+=line with open('E:\\test.csv','wt')as fout: #再次文字方式寫入,不含空行 fout.write(lines)