这是我正在处理的字符串:'5Nov20217Dec202110Jan2022'
字符串也可以是:
'5Nov2021 7Dec2021 10Jan2022'
我想获得如下列表:
['5Nov2021','7Dec2021','10Jan2022']
我目前正在使用正则表达式,但没有效果:
re.findall('^\d{1,2}[a-zA-Z]{3}\d{4}$','5Nov20217Dec202110Jan2022')
正则表达式解决方案不是必须的。
最佳答案
根据输入的可变性,我建议将 re
与 while
循环中的字符串切片结合起来:
def extract_dates(d):
while d:
if (k:=re.findall('^\d{1,2}[a-zA-Z]{3}\d{4}', d)):
if not (l:=d[len(k[0]):]) or l[0].isdigit():
yield k[0]
d = l
continue
if (k:=re.findall('^\d{1,2}[a-zA-Z]{3}\d{2}', d)):
yield k[0]
d = d[len(k[0]):]
else:
d = d[1:]
dates = ['5Nov20217Dec202110Jan2022', '5Nov217Dec2110Jan22', '5Nov21 7Dec21 10Jan22']
results = [list(extract_dates(i)) for i in dates]
输出:
[['5Nov2021', '7Dec2021', '10Jan2022'], ['5Nov21', '7Dec21', '10Jan22'], ['5Nov21', '7Dec21', '10Jan22']]
关于python - 如何从一串相连的日期中获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68187689/