2013-11-15 68 views
0

我花了一整天的時間試圖找到這個問題的解決方案,因爲我沒有找到一個,但我來這裏爲您提供幫助!無法在python中獲得csv.writer的期望輸出

我在寫一篇蟒蛇一個CSV文件輸出,我無法得到它的輸出到底我希望它

讓我們說我有一個包含幾個教程標題字符串列表:

tutorials = ['tut1', 'tut2, 'tut3'] 

,我想在CSV文件的第一行打印這樣的:

First Name, Surname, StudentID, tut1, tut2, tut3 

現在,這是我寫這樣做代碼:

tutStr= ' ' 
    for i tutorials: 
      tutStr += i + ', ' 
    tutStr = tutStr[0:-3] 

    with open('CSVexport.csv', 'wb') as csvFile: 
      writer = csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_NONE) 
      writer.writerow(['First Name'+'Surname'+'ID number'+tutStr) 

這給我的錯誤:
「writer.writerow([ '名字' + '姓' + '身份證號' + labString]) 錯誤:需要逃跑,但沒有escapechar集」

現在,我知道這個錯誤與csv.QUOTE_NONE有關,我必須設置一個escapechar,但我真的不明白我該怎麼做。

,如果我嘗試沒有它會automaticalle設置quotechar到「',這將給我這個輸出

"First Name, Surname, StudentID, tut1, tut2, tut3" --> don't want quotation marks!!! 

任何想法?

回答

1

如果你打算寫與writerow東西QUOTE_NONE你需要傳遞一個列表那裏,不包含用逗號分隔的一個大的字符串列表(它會出現在一個小區中的字符串)。quoting=csv.QUOTE_MINIMAL將有助於引用需要被引用的字符串。

tutorials = ['tut1', 'tut2', 'tut3'] 
headers = ['First Name', 'Surname', 'ID number'] + tutorials 
first_line = True 
with open('CSVexport.csv', 'w') as csvFile: 
     writer = csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_MINIMAL) 
     if first_line: 
      writer.writerow(headers) 
      first_line = False 
+0

[對於Python2:](http://docs.python.org/2/library/csv.html)「如果csvfile是一個文件對象,它必須在平臺上用」b「標誌打開。「[對於Python3:](http://docs.python.org/3.3/library/csv.html)」如果csvfile是一個文件對象,它應該用'newline ='''「打開。 – 2013-11-15 16:15:23