如何过滤掉这个列表,以便我们只剩下一个 yyyy-mm-dd 格式的字符串列表?
2021-11-11
2021-10-01
some_folder
some_other_folder
所以我们最终得到这样一个列表:
2021-11-11
2021-10-01
如果列表有前缀怎么办?
root/2021-11-11
root/2021-10-01
user/some_folder
root/some_other_folder
我们希望以:
root/2021-11-11
root/2021-10-01
最佳答案
我会让 datetime
模块使用 strptime
为我处理。如果它不是 '%Y-%m-%d'
格式,它会引发 ValueError :
import datetime
lst = ['2021-11-11', '2021-10-01', 'some_folder', 'some_other_folder',
'root/2021-11-11', 'root/2021-10-01',
'user/some_folder', 'root/some_other_folder']
def filter_(s):
last_part = s.rsplit('/', maxsplit=1)[-1]
try:
datetime.datetime.strptime(last_part, '%Y-%m-%d')
return True
except ValueError:
return False
print([i for i in lst if filter_(i)])
输出:
['2021-11-11', '2021-10-01', 'root/2021-11-11', 'root/2021-10-01']
https://stackoverflow.com/questions/70086629/