1. 程式人生 > >python使用writerows寫csv檔案產生多餘空行

python使用writerows寫csv檔案產生多餘空行

初次接觸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)
執行一下,結果如下: