我有一些csv文件在一列中有时间戳。我有一些按日期排序的python代码:
#!/usr/bin/python
import csv
import time
import datetime
import operator
import io
import os
def sortTasksCSV():
with open(os.environ['JURGEN']+'Jurgen/nextActions/nextActions.csv', 'rb') as
f:
reader = csv.reader(f, skipinitialspace=True)
tasklist=sorted(reader,key=operator.itemgetter(3), reverse=True)
tasklist.sort(key=lambda item: datetime.datetime.strptime(item[3], '%Y-%
m-%d (%a) - %H:%M:%S'))
output=io.BytesIO()
writer=csv.writer(output)
return tasklist
当我给它一个包含空行的文件时,在“itemgetter(3)”行上得到一个(可以理解的)错误。理想情况下,我希望代码能够优雅地处理空白行——我可以先回溯这些行,然后删除空白行,但这并不是很优雅——在Python中有更好的方法吗?在
您可以使用^{} 过滤出空行(或任何其他类型的行),而无需使用循环。如果省略filter函数(即使用
None
),它将过滤出所有在解释为布尔值时计算为False
的所有内容,例如空行。在在Python2中,
filter
将使用iterable中筛选的元素创建一个新列表。在python3中,结果本身就是iterable。如果希望它在Python2中返回iterable,请使用itertools.ifilter
。在最小示例:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐