2012-07-18 31 views
1

我正在構建一個接受csv數據作爲上傳文件的應用程序。csv閱讀器在無分界符的新行上失敗

這是我的觀點的培訓相關部分:

def climate_upload(request): 
    ... 
    reader = csv.reader(file, delimiter=';') # news csv reader instance 
    next(reader) # skip header row 

    for line in reader: 
     if not line: 
      continue  
     report = site_name 
     report.year = line[1] 
     report.month = line[2] 
     ... 
     report.save() 
    file.close() # close file 
    ... 

所以,這工作正常的數據,看起來像這樣:

;"headers" 
;2012;5;2012-06-01;27.1;24.5;29.8;26.8;85;0.8 
;2012;5;2012-06-02;27.1;24.5;29.8;26.8;85;0.8 

,但未能在此:

"headers" 
2012;5;2012-06-01;27.1;24.5;29.8;26.8;85;0.8 
2012;5;2012-06-02;27.1;24.5;29.8;26.8;85;0.8 

注意每行上缺少初始分隔符。

不幸的是MS Excel似乎吐出了第二個版本。我認爲reader不會將新行識別爲分隔符。是否有一些國旗與讀者,將迫使它接受\n作爲分隔符以及;

任何幫助非常感謝。

回答

2

分隔符或換行符不是問題 - 您計算錯誤。

列表的第一個元素的索引爲0。所以它應該是

report.year = line[0] 
report.month = line[1] 
# etc. 

我猜你正在運行到最後一個元素(line[9])上List index out of range例外。

+0

感謝您指出:)出於某種原因,我在開發時有一個帶分隔符的文件。再次感謝。 – 2012-07-18 20:26:19