如何从带斜杠的S3路径字符串中提取year、month、day变量?
从固定模式的S3路径提取日期变量
正则表达式方案
既然路径模式固定,直接用正则匹配year=xxxx、month=xx、day=xx的结构即可,示例代码如下:
import re s3_path = "s3://bucket/year=2023/month=02/day=22/test.csv" pattern = r'year=(\d{4})/month=(\d{2})/day=(\d{2})' match_result = re.search(pattern, s3_path) if match_result: year = match_result.group(1) month = match_result.group(2) day = match_result.group(3) print(f"年份:{year},月份:{month},日期:{day}")
正则里的(\d{4})匹配4位数字的年份,(\d{2})匹配2位的月份和日期,通过分组可直接提取对应值。
字符串分割方案(无需正则)
因为路径结构固定,也可以直接按/分割路径片段,再筛选目标字段:
s3_path = "s3://bucket/year=2023/month=02/day=22/test.csv" path_parts = s3_path.split('/') date_vars = {} for part in path_parts: if part.startswith('year='): date_vars['year'] = part.split('=')[1] elif part.startswith('month='): date_vars['month'] = part.split('=')[1] elif part.startswith('day='): date_vars['day'] = part.split('=')[1] print(date_vars) # 输出: {'year': '2023', 'month': '02', 'day': '22'}
关于datetime模块的说明
datetime模块无法直接处理这种路径,因为它需要标准日期格式字符串,而这里的日期分散在key=value的路径片段中。不过提取出year、month、day的值后,就可以用datetime构造日期对象:
from datetime import datetime date_obj = datetime(int(year), int(month), int(day)) print(date_obj) # 输出: 2023-02-22 00:00:00
内容的提问来源于stack exchange,提问作者Dametime
相关产品推荐
相关产品推荐

