2017-06-15 59 views
0

我試圖從其他文件中找到寫入CSV文件的方法。 第一行是標題,它必須寫成不帶引號。 所有其他行必須帶有引號。用Python 3.x編寫CSV,不用引用第一行

我試圖使用DictWriter來獲取標題並寫入所有行,但仍然引用所有行(帶標題)。

這裏是我寫的一個例子:

writer = csv.DictWriter(csvOutputFile, fieldnames=FileHeader.getFields(self), delimiter=',', quotechar='\"', quoting=csv.QUOTE_NONNUMERIC) 
writer.writeheader() 

輸出文件應該看起來像:

column1,column2,column3 
"1111","2222","3333" 

回答

2

一個簡單的方法是使用相同的文件對象上的2名不同的CSV作家:

writer = csv.DictWriter(csvOutputFile, fieldnames=FileHeader.getFields(self), 
    delimiter=',', quotechar='\"', quoting=csv.QUOTE_NONE) 
writer.writeheader() 
writer = csv.DictWriter(csvOutputFile, fieldnames=FileHeader.getFields(self), 
    delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL) 
# actually write the data to writer 
+0

謝謝!效果很好 – EliranA

1

我想你可以的writer定義從quoting=csv.QUOTE_NONE寫後改爲quoting=csv.QUOTE_ALL頭。

import csv 

with open('eggs2.csv','w') as csvfile: 
    spamwriter = csv.writer(csvfile, delimiter=',', 
          quotechar='"', quoting=csv.QUOTE_NONE) 
    spamwriter.writerow(['column1','column2','column3','column...']) 
    spamwriter = csv.writer(csvfile, delimiter=',', 
          quotechar='"', quoting=csv.QUOTE_ALL) 
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) 
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 
    spamwriter.writerow([1111, 2222, 33333]) 

結果:

column1,column2,column3,column... 
"Spam","Spam","Spam","Spam","Spam","Baked Beans" 
"Spam","Lovely Spam","Wonderful Spam" 
"1111","2222","33333" 
+0

感謝您的幫助 – EliranA

+0

@RolfofSaxony:我真的很抱歉,我應該更加註意地閱讀你的答案,只在這裏發表評論,而不是寫另一個答案。我只讀代碼的開頭。 –