如何过滤掉这个列表,以便我们只留下 yyyy-mm-dd 格式的字符串列表?
2021-11-11
2021-10-01
some_folder
some_other_folder
Run Code Online (Sandbox Code Playgroud)
这样我们最终得到一个像这样的列表:
2021-11-11
2021-10-01
Run Code Online (Sandbox Code Playgroud)
如果列表有前缀怎么办?
root/2021-11-11
root/2021-10-01
user/some_folder
root/some_other_folder
Run Code Online (Sandbox Code Playgroud)
我们希望最终得到:
root/2021-11-11
root/2021-10-01
Run Code Online (Sandbox Code Playgroud)
我会让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)])
Run Code Online (Sandbox Code Playgroud)
输出 :
['2021-11-11', '2021-10-01', 'root/2021-11-11', 'root/2021-10-01']
Run Code Online (Sandbox Code Playgroud)