gpt4 book ai didi

python - 按日期顺序过滤字符串列表,其中日期是字符串的一部分

转载 作者:行者123 更新时间:2023-12-01 00:56:17 26 4
gpt4 key购买 nike

我以 xxxx_2019-05-20.txt 格式创建文件名列表,其中包含目录中的所有文件。我使用 os.listdir('path') 来构建列表。

我想创建第二个列表,仅包含 2019 年 1 月 1 日之后的文件。

有没有一种方法可以做到这一点,而无需迭代每个文件名并从文件名中提取日期并将其与过滤器日期(2019-01-01)进行比较?

我可以执行上述操作,唯一的问题是我可以查看非常大的目录,所以只是想知道是否有更聪明的方法来做到这一点。感谢您的帮助。

最佳答案

我认为时间在这里不会成为问题。我构建了一个包含一百万个假文件名的工作流程,它对我来说大约需要 2.5 秒(我有一台普通计算机)。此外,我使用正则表达式来提取年份,因此如果您想要更简单的解决方案,它会更快。

import timeit

s="""from random import choice
import re

names = ('WAKA', 'waka', 'waka-waka', 'wattafak')
dates = ('2018-12-01', '2018-01-01', '2019-01-01', '2019-02-03')

filenames = (
choice(names) + '_' + choice(dates) + '.txt'
for _ in range(1000000)
)

def check_filenames_regex(filenames):
REGEX = re.compile(r'.*_(?P<year>\d{4})-\d\d-\d\d\..+')
result = []
for f in filenames:
r = REGEX.match(f)
if r:
year = r.group('year')
if int(year) >= 2019:
result.append(f)
return result
"""

timeit.timeit('check_filenames_regex(filenames)', setup=s)

返回:

2.742631300352514

如果您的文件夹中的文件少于数千万个,那么简单的暴力解决方案应该不成问题。

关于python - 按日期顺序过滤字符串列表,其中日期是字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com