NOAA浮标RSS数据处理:将时间字符串转为datetime对象并针对整点编写条件判断
NOAA浮标RSS数据处理:将时间字符串转为datetime对象并针对整点编写条件判断
嘿,这个问题我之前处理类似的RSS时序数据时也碰到过!你的思路完全正确——把时间字符串转成datetime对象确实是做这种整点判断最稳妥的方式,比直接去字符串里匹配'00'靠谱多了,毕竟字符串匹配很容易踩坑(比如万一RSS的时间格式哪天有细微调整,比如多了个空格或者格式变了,直接匹配就失效了)。
给你具体的实现步骤:
首先导入Python的
datetime模块,用来解析时间字符串把你从RSS里提取到的时间字符串,用
datetime.strptime()方法转成datetime对象,这个方法需要你传入字符串对应的格式符:%B:匹配完整的月份名称(比如January)%d:匹配两位数字的日期(如果是个位数会带前导零,也能适配无前置零的日期格式)%Y:匹配四位数字的年份%I:匹配12小时制的小时数(比如9、10)%M:匹配两位数字的分钟数%p:匹配AM/PM标识(比如am、pm)
然后通过
datetime对象的minute属性判断是不是整点,再调整你的变量赋值逻辑
具体代码示例如下:
from datetime import datetime # 假设你从RSS里拿到的时间字符串是这个 time_str = "January 10, 2023 10:00 am" # 解析成datetime对象 buoy_time = datetime.strptime(time_str, "%B %d, %Y %I:%M %p") # 初始化默认的索引 air_temp_idx = 7 water_temp_idx = 8 # 判断是否为整点 if buoy_time.minute == 0: # 这里根据RSS的实际结构调整索引,比如整点时多了变量导致索引偏移,就修改对应数值 # 你原代码里写的还是7和8,这里先保留你的逻辑,实际按需调整 air_temp_idx = 7 water_temp_idx = 8 # 最后赋值 air_temp = rows[air_temp_idx] water_temp = rows[water_temp_idx]
另外要提醒你:如果RSS里的时间字符串有时会出现个位数小时不带前导零的情况(比如你的例子里的9:48 am),%I也能正常匹配,不用担心格式问题。而且这样处理后,你完全可以保留原来的time_str用来输出,转datetime只是为了做条件判断而已,完全不影响你想要的输出格式。
备注:内容来源于stack exchange,提问作者ghulseman
相关产品推荐
相关产品推荐

