python - 验证 Python 中文件名的格式

标签 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

最佳答案

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

import re

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

关于python - 验证 Python 中文件名的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59820573/

相关文章:

python - 使用Pandas导出csv时如何指定数据类型和格式?

python 如何通过与变量名匹配的模式对列表进行排序

python - 处理来自 SQLAlchemy Join 的 Pandas DataFrame 构造函数中的重复列

python - 将 unicode 元素读入 numpy 数组

Python asyncio 非阻塞 for 循环

python - 在 Pandas 中使用 groupby、shift 和 rolling

Python:用装饰器计算递归函数的执行时间

python - 如何将一串空格分隔的数字拆分为整数?

python - 即使我设置了 fit_intercept= False,为什么我的回归模型仍返回截距?

python - 将带有 header 的 numpy 数组转换为 float