python - Azure 路径中日期为字符串的正则表达式

标签 python regex azure date path

我有很多文件夹(在 Microsoft Azure 数据湖中),每个文件夹都以日期命名,格式为“ddmmyyyy”。一般来说,我使用正则表达式来提取一年中某个月份的所有文件夹的所有文件

path_data="/mnt/data/[0-9]*032022/data_[0-9]*.json" # all folders of all days of month 03 of 2022
result=spark.read.json(path_data)

我现在的问题是提取与给定日期之前一年完全匹配的所有文件夹

例如:日期 14-03-2022;我需要一个正则表达式来自动读取 2021 年 3 月 14 日到 2022 年 3 月 14 日之间所有文件夹的所有文件。

我尝试使用字符串提取变量中的月份和年份,然后在尊重条件的正则表达式中使用这两个字符串(对于所示示例,当年份等于 2021 时,月份应大于 03;当年份等于 2021 时,月份应小于 03等于 2022 年)。我尝试了类似的操作(同时将变量替换为 03、2021 和 2022)。

date_regex="([0-9]{2}[03-12]2021)|([0-9]{2}[01-03]2022)" 

有没有任何提示我如何执行这样的任务!

提前致谢

最佳答案

如果我正确理解你的问题。

要从文件名字段查找 ??-03-2021??-03-2022 之间的日期,您可以使用以下正则表达式

date_regex="([0-9]{2}-03-2021)|([0-9]{2}-03-2022)"

此外,如果您想要更加自定义,最好应用下面链接中的更改并利用它

https://regex101.com/r/AgqFfH/1

更新:提取日期在 14032021 到 14032022 之间的任何文件夹

解决方案:首先我们用ridge提取ddmmyyyy格式的日期,然后我们给出文件,假设我们的格式正确并且在其中找到了这样的短语。

date_regex="((0[1-9]|1[0-9]|2[0-8])|(0[1-9]|1[012]))"
if re.find(r"((0[1-9]|1[0-9]|2[0-8])|(0[1-9]|1[012]))") > 14032021 and re.find(r"((0[1-9]|1[0-9]|2[0-8])|(0[1-9]|1[012]))") < 14032022
..do any operation..

上面的代码只是通宵代码,供您概述解决方案方法。

首先,我们使用正则表达式提取 ddmmyyyy 格式的日期,然后假设我们的格式正确并且在其中找到了这样的短语,则提供文件。

我希望这个解决方案有所帮助。

关于python - Azure 路径中日期为字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71472174/

相关文章:

python - @cached_property 和@lru_cache 装饰器的区别

python - 使用一定数量的非 NaN 条目在 Pandas DataFrame 中保留索引

azure - 调用RestMethod :unauthorized client for getting Authentication-token

azure - 如何在单个 Azure VM 上安装 2 个 SSL 证书

php - 功能需要稍作修改

azure - 对Azure存储帐户的只读访问

python - 正确的 Python 语法和语义 : if, 否则,通过

python - 将数组的字符串表示形式转换为 python 中的实际数组

c# - 在 C# 中,如何使用 Regex.Replace 添加前导零(如果可能)?

c# - 如何验证输入是否包含有效的 .Net 正则表达式?