在Python中,当有两个日期时,如何从文件名中提取日期?我如何转换成一年中的某一天?
我有一个我正在浏览的文件列表,文件名中包含两个日期。如何提取每个日期并将其存储到变量中?我如何将它转换为一年中的某一天 我的代码不起作用,因为我无法提取月/日,因为有些月以零开头。我的密码是:在Python中,当有两个日期时,如何从文件名中提取日期?我如何转换成一年中的某一天?,python,date,datetime,Python,Date,Datetime,我有一个我正在浏览的文件列表,文件名中包含两个日期。如何提取每个日期并将其存储到变量中?我如何将它转换为一年中的某一天 我的代码不起作用,因为我无法提取月/日,因为有些月以零开头。我的密码是: sstDataFile=AQUA_MODIS.20100101_20100131.L3m.MO.SST.sst.4km.nc year1=int(sstDataFile[11:15]) day1=int(sstDataFile[15:19]) year2=int(sstDataF
sstDataFile=AQUA_MODIS.20100101_20100131.L3m.MO.SST.sst.4km.nc
year1=int(sstDataFile[11:15])
day1=int(sstDataFile[15:19])
year2=int(sstDataFile[20:24])
day2=int(sstDataFile[24:27])
print(year1)
print(year2)
print (day1)
print(day2)
if year1%4==0:
decYr1 = year1 + day1/366.0
else:
decYr1 = year1 + day1/365.0
if year2%4==0:
decYr2 = year2 + day2/366.0
else:
decYr2 = year2 + day2/365.0
decYr=0.5*(decYr1+decYr2) #decimal year between the composite start and end points
您可以使用来解析和执行python中带有日期的操作:
首先,需要稍微操纵字符串以提取与日期相关的部分。假设所有字符串的格式都相同(例如,“SOMETHING.date1\u date2.SOMETHINGELSE…”
):
full_string='AQUA_MODIS.20100101_20100131.L3m.MO.SST.SST.4km.nc'
date1,date2=完整的字符串。拆分('.')[1]。拆分(''.'))
打印(日期1、日期2)
20100101 20100131
现在我们已经提取了日期,我们需要将其转换为datetime格式。您的两个字符串的格式如下YYYYMMDD
。不知何故,我们需要告诉datetime,这是它应该使用的格式。你可以看到更多的细节。在我们的例子中,它应该是这样的:
fmt='%Y%m%d'#%Y-->YYYY
#%m-->毫米
#%d-->DD
date1=datetime.strtime(date1,fmt)
date2=datetime.strtime(date2,fmt)
打印(日期1、日期2)
2010-01-01 00:00:00 2010-01-31 00:00:00
据我所知,你想用小数来计算“平均”年份。Datetime允许您对日期执行操作。我认为最好的方法是:
avg_date=datetime.fromtimestamp((date1.timestamp()+date2.timestamp())/2)
打印(平均日期)
2010-01-16 00:00:00
最后,您希望将日期表示为一年中的一小部分:
y=avg_date.year
m=(平均日期月-1)/12
d=(平均日期-1)/365
结果=y+m+d
打印(结果)
使用“确定”,但如何提取日期?这是我面临的主要问题。这有帮助吗:在使用此链接中的解决方案之前,您可能必须将字符串一分为二,如果所有文件名都遵循相同的模式,那么应该很容易