Python删除CSV文件末尾的空格

时间:2012-06-25 16:14:49

标签: python django csv

我有一个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错误。

我的问题是,如何从文件的末尾(可能只是为了确定)中删除空格。

任何帮助都非常感激。

4 个答案:

答案 0 :(得分:2)

line将是一个列表。你不能剥离它。如果它是一个空列表,表示它是文件中的空行。请检查行中是否有元素。空行不会包含任何列表元素。

您可以检查该行是否有效if line:

,而不是剥离行

答案 1 :(得分:1)

如果我的理解是正确的,你想要在文件的末尾处理一些空白行,对吗?

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

感谢@ dm03514指出我原来回答中的错误

答案 2 :(得分:0)

你试过line.strip()吗?

http://docs.python.org/library/stdtypes.html

答案 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()