我正在构建一个接受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
作为分隔符以及;
?
任何帮助都非常感激。
答案 0 :(得分:2)
分隔符或换行符不是问题 - 您计算错误。
列表的第一个元素具有索引0
。所以它应该是
report.year = line[0]
report.month = line[1]
# etc.
我猜你在最后一个元素(List index out of range
)上遇到line[9]
例外。