我有一个Django视图,它读取CSV文件并将其保存到模型中。
views.py :
def csv_upload(request):
...
file = request.FILES['attach']
reader = csv.reader(file, delimiter=';')
next(reader) # skip headers
for line in reader:
... # process and save
修改
回溯:
File "/home/sam/django-projects/datazone/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/sam/django-projects/datazone/bin/datazone/climate/views.py" in climate_upload
258. report.year = line[1]
Exception Type: IndexError at /climate/upload/
Exception Value: list index out of range
结束编辑
在使用文件变体进行测试时,我注意到如果文件中有尾随空格(例如由于保存Excel而导致空行),我会收到Index out of range
错误。
我的问题是,如何从文件的末尾(可能只是为了确定)中删除空格。
任何帮助都非常感激。
答案 0 :(得分:2)
line
将是一个列表。你不能剥离它。如果它是一个空列表,表示它是文件中的空行。请检查行中是否有元素。空行不会包含任何列表元素。
您可以检查该行是否有效if line:
答案 1 :(得分:1)
如果我的理解是正确的,你想要在文件的末尾处理一些空白行,对吗?
for line in reader:
if line:
... # process and save
感谢@ dm03514指出我原来回答中的错误
答案 2 :(得分:0)
你试过line.strip()
吗?
答案 3 :(得分:0)
Line是一个列表,而不是字符串。如果您将整个列表作为参数传递,则可以创建strip_list函数。
def strip_list(my_list):
for index, string in enumerate(my_list):
try: my_list[index] = string.strip()
# In case it's not a string
except AttributeError: pass
return my_list
for line in reader:
line = strip_list(line)
或者您可以在使用时剥离每个项目。
line[0].strip()