1

我正在构建一个接受 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不是将新行识别为分隔符。是否有一些带有 reader 的标志会强制它接受\n作为分隔符;

非常感谢任何帮助。

4

1 回答 1

2

分隔符或换行符不是问题 - 你计数不正确。

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

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

我猜您在List index out of range最后一个元素 ( line[9]) 上遇到了异常。

于 2012-07-18T17:54:21.667 回答