You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从S3路径列表中提取日期数字并生成新列表?

从S3路径列表提取日期数字的实现方法

给定如下格式的列表:

['s3://dx-datalake-modl-svil-3075-bucket-layer/DX/WDOS/VV_SALDI_TITOLO/c_acr=GE/c_giorno_t=20201231/', 's3://dx-datalake-modl-svil-3075-bucket-layer/DX/WDOS/VV_SALDI_TITOLO/c_acr=GE/c_giorno_t=20230531/']

需要从中仅提取数字20230531和20201231,并放入新列表,最终得到['20230531','20201231']。

方法1:字符串分割法

利用路径中固定标识c_giorno_t=做分割,直接提取目标内容:

s3_paths = ['s3://dx-datalake-modl-svil-3075-bucket-layer/DX/WDOS/VV_SALDI_TITOLO/c_acr=GE/c_giorno_t=20201231/', 's3://dx-datalake-modl-svil-3075-bucket-layer/DX/WDOS/VV_SALDI_TITOLO/c_acr=GE/c_giorno_t=20230531/']
result = []
for path in s3_paths:
    # 先按'c_giorno_t='拆分取后半段,再按'/'拆分取第一个元素
    date_str = path.split('c_giorno_t=')[1].split('/')[0]
    result.append(date_str)
# 反转列表得到目标顺序
result.reverse()
print(result)  # 输出: ['20230531', '20201231']

方法2:正则表达式法

通过正则匹配8位数字的日期格式,适配更多类似路径场景:

import re

s3_paths = ['s3://dx-datalake-modl-svil-3075-bucket-layer/DX/WDOS/VV_SALDI_TITOLO/c_acr=GE/c_giorno_t=20201231/', 's3://dx-datalake-modl-svil-3075-bucket-layer/DX/WDOS/VV_SALDI_TITOLO/c_acr=GE/c_giorno_t=20230531/']
# 匹配连续8位数字的正则表达式
pattern = re.compile(r'\d{8}')
result = [pattern.search(path).group() for path in s3_paths]
# 反转列表得到目标顺序
result.reverse()
print(result)  # 输出: ['20230531', '20201231']

内容的提问来源于stack exchange,提问作者Antony Salvo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:26:06