Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式匹配文件名blahblah_200901.csv(yyyymm)_Python_Regex_Pattern Matching_Match_Filenames - Fatal编程技术网

Python 正则表达式匹配文件名blahblah_200901.csv(yyyymm)

Python 正则表达式匹配文件名blahblah_200901.csv(yyyymm),python,regex,pattern-matching,match,filenames,Python,Regex,Pattern Matching,Match,Filenames,我一直在修补正则表达式以匹配如下文件名: blahblah_200901.csv (2009, January) blahblah_201512.csv (2015, December) 我有一个从年到年,从月到月传递的函数,所以我可以获取范围,但是我很难使用正确的正则表达式。月份字段由两位数字指定(即01到12) 上面代码中的正确x有问题。最简单的方法是根本不进行任何匹配;取而代之的是第一个和最后一个文件名,并确保该值介于2: start = 'blahblah_{:04}{:02}'.fo

我一直在修补正则表达式以匹配如下文件名:

blahblah_200901.csv (2009, January)
blahblah_201512.csv (2015, December)
我有一个从年到年,从月到月传递的函数,所以我可以获取范围,但是我很难使用正确的正则表达式。月份字段由两位数字指定(即01到12)


上面代码中的正确x有问题。

最简单的方法是根本不进行任何匹配;取而代之的是第一个和最后一个文件名,并确保该值介于2:

start = 'blahblah_{:04}{:02}'.format(from_year, from_month)
end = 'blahblah_{:04}{:02}'.format(to_year, to_month)

for f in os.listdir('/path/dir'):
    if start <= f <= end:
        print(f)
start='blahblah{:04}{:02}'。格式(从年开始,从月开始)
end='blahblah{:04}{:02}'。格式(到年,到月)
对于os.listdir('/path/dir')中的f:

如果开始最简单的方法是根本不进行任何匹配;取而代之的是第一个和最后一个文件名,并确保该值介于2:

start = 'blahblah_{:04}{:02}'.format(from_year, from_month)
end = 'blahblah_{:04}{:02}'.format(to_year, to_month)

for f in os.listdir('/path/dir'):
    if start <= f <= end:
        print(f)
start='blahblah{:04}{:02}'。格式(从年开始,从月开始)
end='blahblah{:04}{:02}'。格式(到年,到月)
对于os.listdir('/path/dir')中的f:

如果start
r“blahblah|(19|20)\d{2}(1[0-2]|0[1-9])”
将匹配20世纪和21世纪任何一年的月份(01-12)。如何通过我的年份和月份输入变量控制正则表达式?我希望能够匹配所有可能性的子集,其中子集由年(从,到)和月(从到)变量定义。覆盖日期范围的正则表达式模式将非常复杂。通过解析文件名并比较适当的位,所涉及的if-else逻辑将更容易、更清晰地解决…
r“blahblah_389;(19|20)\d{2}(1[0-2]| 0[1-9])”
将匹配20世纪和21世纪任何一年的月份(01-12)。如何通过我的年份和月份输入变量控制正则表达式?我希望能够匹配所有可能性的子集,其中子集由年(从,到)和月(从到)变量定义。覆盖日期范围的正则表达式模式将非常复杂。通过解析文件名并比较适当的位,所涉及的if-else逻辑将更容易、更清晰地解决。。。
m = re.match('blahblah(\d{4})(\d{2})', f)
if m:
    year = int(m.group(1))
    month = int(m.group(2))

    if (from_year, from_month) <= (year, month) <= (to_year, to_month):
        print(f)