我有以下代码:
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'
显然,没有过滤具有空列的行。关于如何让它工作的任何指示都将不胜感激。
答案 0 :(得分:1)
嗯,最简单的解决方案是修改过滤器调用并忽略具有空数据列的行:
filteredRows = filter(lambda x: len(x) > col and x[col].strip(), reader)
我建议检查,为什么你会得到空数据。除非它是可接受的(例如数据有空行)。
PS。您应该在最后一行使用col而不是2,对吗?