正则表达式以中间日期搜索文件

我正在尝试创建一个正则表达式,以匹配中间有日期的文件:文件名看起来像这样

"Weekly Score 07.27.2018 Report.csv"
"Weekly Score 08.03.2018 Report.csv"

该文件夹可以有多个这样的文件,我想用此模式匹配任何文件。

我正在服务器上为此编写python代码。


慕少森
浏览 106回答 3
3回答

拉风的咖菲猫

使用(0?[1-9] | 1 [012])。(0?[1-9] | [12] [0-9] | 3 [01])。\ d {4}:import refiles = ["Weekly Score 07.27.2018 Report.csv", "Weekly Score 08.03.2018 Report.csv"]result = []for filename in files:    m = re.search(r"\s(0?[1-9]|1[012])\.(0?[1-9]|[12][0-9]|3[01])\.\d{4}\s", filename)    if m:        result.append(m.group())print(result)(0?[1-9]|1[012]) -个月(从01到12)(0?[1-9]|[12][0-9]|3[01]) -天(从01到31)。\d{4} - 年。

隔江千里

您不应该使用正则表达式来匹配日期时间,因为这可能导致误报。使用获取文件glob,对其进行迭代,并使用datetime.datetime.strptime空格分隔的第三字段检查日期时间模式:import globimport datetimefiles = glob.iglob('Weekly Score * Report.csv')  # Make necessary changes                                                 # on the pattern, if you wantfor file_name in files:    try:        datetime.datetime.strptime(file_name.split()[2], '%m.%d.%Y')    except ValueError:        continue    # Matched; do stuffs    print(file_name)例子:In [960]: files = ["Weekly Score 07.27.2018 Report.csv", "Weekly Score 08.03.2018 Report.csv", "Weekly Score 15.23.2018 Report.csv"]In [961]: for file_name in files:     ...:     try:     ...:         datetime.datetime.strptime(file_name.split()[2], '%m.%d.%Y')     ...:     except ValueError:     ...:         continue     ...:     print(file_name)     ...:      ...:         Weekly Score 07.27.2018 Report.csvWeekly Score 08.03.2018 Report.csv
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python