验证Python中文件名的格式

2024-10-02 14:20:06 发布

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

每周我都会收到两份以下格式的文件

EMEA_{sample}_Tracker_{year}_KW{week}

例如

EMEA_G_Tracker_2019_KW52.xlsx

EMEA_BC_Tracker_2019_KW52.xlsx

接下来的文件看起来像这样

EMEA_G_Tracker_2020_KW1.xlsx

EMEA_BC_Tracker_2020_KW1.xlsx

占位符:

  • 样本=G或BC
  • 年份=本年度[YYYY]
  • 周=日历周[0-~52]

只有在占位符中进行了更改,其他所有内容都将保持不变

如何从文件名中提取这些值并检查文件名是否具有此格式

现在我只使用os.walk()读取所有文件:

path_files = "Files/"

files = []
for (_, _, filenames) in walk(path_files):
    files.extend(filenames)
    break

Tags: 文件samplepath文件名格式filesxlsxyear
2条回答

下面是一个示例,说明如何使用regexlist comprehension将与模式匹配的所有文件收集到一个列表中。然后,您可以在后面的代码中使用该列表

import os
import re

# Compile the regular expression pattern.
re_emea = re.compile('^EMEA_(G|BC)_Tracker_20\d{2}_KW\d{1,2}.xlsx$')
# Set path to be searched.
path = '/home/username/Desktop/so/emea_files'

# Collect all filenames matching the pattern into a list.
files = [f for f in os.listdir(path) if re_emea.match(f)]

# View the results.
print(files)

目录中的所有文件:

['EMEA_G_Tracker_2020_KW2.xlsx',
 'other_file_3.txt',
 'EMEA_G_Tracker_2020_KW1.xlsx',
 'other_file_2.txt',
 'other_file_5.txt',
 'other_file_4.txt',
 'EMEA_BC_Tracker_2019_KW52.xlsx',
 'other_file_1.txt',
 'EMEA_G_Tracker_2019_KW52.xlsx',
 'EMEA_BC_Tracker_2020_KW2.xlsx',
 'EMEA_BC_Tracker_2020_KW1.xlsx']

模式匹配的结果:

['EMEA_G_Tracker_2020_KW2.xlsx',
 'EMEA_G_Tracker_2020_KW1.xlsx',
 'EMEA_BC_Tracker_2019_KW52.xlsx',
 'EMEA_G_Tracker_2019_KW52.xlsx',
 'EMEA_BC_Tracker_2020_KW2.xlsx',
 'EMEA_BC_Tracker_2020_KW1.xlsx']

希望这有帮助!如果没有,就喊我一声

如果filename是您获得的文件名:

import re

result = re.match(r'EMEA_(.*?)_Tracker_(\d+)_KW(\d+)', filename)
sample, year, week = result.groups()

相关问题 更多 >