我有一个字符串s = "o4_24d_20170708_20170801"
,其中包含两个日期,我正在尝试提取这两个日期,以便相互减去它们以计算它们之间的天数。最后,我的目标是得到一个这样的字符串:import re, datetime
s = "o4_20170708_20170801"
match = re.search('\d{4}\d{2}\d{2}', s)
date = datetime.datetime.strptime(match.group(), '%Y%m%d').date()
print date
在我工作的公司,我们无法安装其他软件包,因此我正在寻找使用本机python的解决方案。以下是我到目前为止使用的datetime包,它只提取一个日期:如何从字符串中获取两个日期?
String
答案 0 :(得分:3)
from datetime import datetime
import re
s = "o4_20170708_20170801"
pattern = re.compile(r'(\d{8})_(\d{8})')
dates = pattern.search(s)
# dates[0] is full match, dates[1] and dates[2] are captured groups
start = datetime.strptime(dates[1], '%Y%m%d')
end = datetime.strptime(dates[2], '%Y%m%d')
difference = end - start
print(difference.days)
将打印
24
然后,您可以执行以下操作:
days = 'd{}_'.format(difference.days)
match_index = dates.start()
new_name = s[:match_index] + days + s[match_index:]
print(new_name)
获取
o4_d24_20170708_20170801
答案 1 :(得分:0)
import re, datetime
s = "o4_20170708_20170801"
match = re.findall('\d{4}\d{2}\d{2}', s)
for a_date in match:
date = datetime.datetime.strptime(a_date, '%Y%m%d').date()
print date
这将打印:
2017-07-08
2017-08-01
您的正则表达式在regexpal
处正常运行