我有一个字符串列表,我想删除不是日期的项目。我只是想检查它们是否是日期,而不是将它们转换为datetime。我正在使用dateutil.parser
-如何处理它引起的错误并继续循环?这是我的代码:
from dateutil.parser import parse
def drop_nondates(dates, fuzzy=False):
for string in dates:
try:
parse(string, fuzzy=fuzzy)
except:
dates.remove(string)
pass
return dates
在小清单上进行测试:
In: drop_nondates( ['January 2018', 'Enero 2018', 'not a date 2018', '2018'] )
>>> ['January 2018', 'not a date 2018', '2018']
但所需的输出将是:
['January 2018', '2018']
答案 0 :(得分:0)
请参阅Asocia的评论:在迭代列表时不要修改列表。如果您例如将所有“可分析的”结果附加到新列表中并返回:
from dateutil.parser import parse
def drop_nondates(dates, fuzzy=False):
result = []
for string in dates:
try:
parse(string, fuzzy=fuzzy)
except:
pass
else:
result.append(string)
return result
drop_nondates( ['January 2018', 'Enero 2018', 'not a date 2018', '2018'] )
# ['January 2018', '2018']