如何在glob库中使用regex

2024-10-03 21:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件夹,里面有许多输入文件,可以用于D3可视化。但是,我很难让我的regex代码与glob一起工作。这允许用户指定年份(注意:我的所有输入文件的格式都是YYYY_MM#produpdt####)

from glob import glob

years = "[\'2016\']"
months = "[\'12\']"
loc = "produpdt_files/"
file_list = []
for year in years:
    file_list.extend(glob(loc+year+"*"))
print file_list

我应该如何编写代码来使用年和月?以下操作无效:

^{pr2}$

Tags: 文件代码用户文件夹可视化yearlocglob
2条回答

glob不接受正则表达式,因此需要编写自己的glober。但是用os.listdir很容易做到。您可以使用regex中的组来查找多个日期,例如r"(2012|2013|2014)_(10|11)_\dproduptd\d{4}"。下面的示例使用年份和月份列表格式化regex。在

import os
import re

def produpdt_glob(path, years=None, months=None):
    if years is None:
        years = r'\d' * 4
    if months is None:
        months = r'[01]\d'
    regex = r'({})_({})_\dprodupdt\d{4}'.format('|'.join(years), '|'.join(months))
    match = re.compile(regex).match
    for fn in os.listdir(path):
        if match(fn):
            fn = os.path.join(path, fn)
            if os.path.isfile(fn):
                yield fn

要输入glob的表达式是os.path.join(loc, "2016_12_*")

相关问题 更多 >