csv阅读器在没有分隔符的新行上失败

时间:2012-07-18 17:44:54

标签: django 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作为分隔符以及;

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:2)

分隔符或换行符不是问题 - 您计算错误。

列表的第一个元素具有索引0。所以它应该是

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

我猜你在最后一个元素(List index out of range)上遇到line[9]例外。