在Python中的日期列上对CSV进行排序,同时忽略空单元格值

时间:2017-06-24 04:49:41

标签: python csv

我有以下代码:

 with closing(requests.get(CSV_URL, stream=False, verify=False)) as result:
    reader = csv.reader(result.iter_lines(), delimiter=',', quotechar='"')

    # skip the header
    reader.next()

    # sort on date column
    col = 2
    filteredRows = filter(lambda x: len(x) > col, reader)
    sortedRows = sorted(filteredRows, key=lambda row: time.strptime(row[2].strip(), "%m/%d/%Y"), reverse=True)

如果我不排序,我可以很好地遍历行。我得到的错误是:

ValueError: time data '' does not match format '%m/%d/%Y'

显然,没有过滤具有空列的行。关于如何让它工作的任何指示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

嗯,最简单的解决方案是修改过滤器调用并忽略具有空数据列的行:

filteredRows = filter(lambda x: len(x) > col and x[col].strip(), reader)

我建议检查,为什么你会得到空数据。除非它是可接受的(例如数据有空行)。

PS。您应该在最后一行使用col而不是2,对吗?