Python删除CSV文件末尾的空白

Python删除CSV文件末尾的空白,python,django,csv,Python,Django,Csv,我有一个Django视图,它读取CSV文件并将其保存到模型中 视图.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 编辑 回溯: Fi

我有一个Django视图,它读取CSV文件并将其保存到模型中

视图.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而出现空行),我会得到一个
索引超出范围的错误

我的问题是,如何从文件的末尾(当然可能是开头)去掉空白


非常感谢您的帮助。

您是否尝试过
line.strip()


如果我的理解是正确的,您想处理文件末尾的一些空行,对吗

for line in reader:
    if line:
        ... # process and save

感谢@dm03514指出我原始答案中的一个错误

行是一个列表,而不是字符串。如果将整个列表作为参数传递,则可以创建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()

将是一个列表。你不能剥掉它。如果它是一个空列表,则表示它是文件中的一个空行。只需检查行中是否包含元素。空行将没有任何列表元素


如果行:

您可以发布您收到的准确回溯吗?这给了我
'list'对象没有属性'strip'
是的,行是一个列表,而不是一个字符串,您可以检查行是否有效。如果使用整个列表作为参数,则可以创建一个strip_list函数。这对我来说很有效:
如果“”。join(line)='':continue
。使用这个解决方案有什么问题吗?@DarwinTech是的,可以。或者,您可以使用我更新的答案中的一个,更简洁,我猜这是不必要的,当您可以检查行是否为空时,为什么要调用函数<代码>如果行:?@dm03514您是对的,我认为csv读取器函数对空行所做的操作与
split()
相同,fixed@xvatar-所以我使用了
if not line:continue
,它很好地适应了流程,并处理了任何碰巧为空的行。谢谢。
第[0]行。strip()
不能解决他的问题,它会引发相同的错误;