如何用原生Python从字符串中提取两个日期并计算间隔天数?
原生Python提取双日期并计算间隔天数方案
嘿,完全不用愁,咱们用Python自带的工具就能搞定这个需求,不用装任何额外包~
步骤1:拆分字符串并提取日期
你的字符串是用下划线_分隔的,所以首先可以用split('_')把它拆分成列表,然后从中找出那两个8位的日期字符串。这里有两种思路:
思路A:针对固定格式直接提取
如果你的字符串格式永远像示例那样(日期在第3和第4个位置,索引从0开始的话就是[2]和[3]),那可以直接通过索引取值,简单高效:
s = "o4_24d_20170708_20170801" parts = s.split('_') date_str1 = parts[2] date_str2 = parts[3]
思路B:通用筛选(适配格式有变化的情况)
如果字符串格式可能有变动,但日期都是8位数字,那可以遍历拆分后的列表,筛选符合条件的元素:
s = "o4_24d_20170708_20170801" parts = s.split('_') date_strs = [part for part in parts if len(part) == 8 and part.isdigit()] # 这里date_strs会是包含两个日期的列表,顺序和原字符串一致 date_str1, date_str2 = date_strs
步骤2:转换为datetime对象并计算间隔
接下来用datetime模块把字符串转成日期对象,然后直接相减就能得到天数差:
from datetime import datetime # 把日期字符串转成datetime对象 date1 = datetime.strptime(date_str1, '%Y%m%d') date2 = datetime.strptime(date_str2, '%Y%m%d') # 计算间隔天数,注意取绝对值避免顺序问题 days_diff = abs((date2 - date1).days)
完整示例代码
把上面的步骤整合起来,就是一个完整的可运行代码:
from datetime import datetime s = "o4_24d_20170708_20170801" # 拆分字符串提取日期 parts = s.split('_') date_str1 = parts[2] date_str2 = parts[3] # 转换为日期对象 date1 = datetime.strptime(date_str1, '%Y%m%d') date2 = datetime.strptime(date_str2, '%Y%m%d') # 计算间隔天数 days_diff = abs((date2 - date1).days) # 验证结果(示例中20170708到20170801是24天,和原字符串里的24d对应) print(f"两个日期间隔:{days_diff}天")
这样就能轻松提取两个日期并算出间隔啦,完全用的是Python原生功能,符合你的公司限制~
内容的提问来源于stack exchange,提问作者kurdtc
相关产品推荐
相关产品推荐

