python - 如何从带日期的字符串列表中过滤掉字符串?

如何过滤掉这个列表,以便我们只剩下一个 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/

相关文章:

python - Ursina Python 引擎 : Lighting, 阴影和光晕效果

php - arc diff(Arcanist)因 env : php: No such file

angular - "declare global{ interface Window{ analy

encryption - 如何在 Web 浏览器中使用 Webauthn/CTAP HMAC-Sec

typescript - 如何防止将 Prop 传递给内部样式组件

c - 在两个源文件之间拆分类似函数的宏调用

angular - 我需要取消订阅 Angular Observable 吗?

scala - Scala 3 中的递归高阶函数类型

clojure - 撤消覆盖 Clojure 中的内置函数

c++ - 多线程段故障析构函数