如何将'dd.mm.yyyy hh'格式字符串列表拆分为四个整数列表?
解决方案
你可以通过遍历时间字符串列表,对每个元素调用解析逻辑,将结果分别收集到四个列表中。另外,也可以优化解析方式,避免依赖固定字符串索引,让代码更稳健。
方法一:基于你现有函数的实现
直接复用你写好的解析函数,遍历列表逐个处理:
# 保留你已有的解析函数 def getYear(timeStampStr): yearStr = timeStampStr[6:10] return int(yearStr) def getMonth(timeStampStr): monthStr = timeStampStr[3:5] return int(monthStr) def getDay(timeStampStr): dayStr = timeStampStr[0:2] return int(dayStr) def getHour(timeStampStr): # 兼容带冒号的小时格式(如'00:00') hourStr = timeStampStr[11:13] return int(hourStr) # 你的时间字符串列表 time_stamps = ['01.11.2020 00:00', '01.11.2020 01:00', '01.11.2020 02:00'] # 初始化四个空列表存储结果 years = [] months = [] days = [] hours = [] # 遍历列表,逐个解析并收集数据 for ts in time_stamps: years.append(getYear(ts)) months.append(getMonth(ts)) days.append(getDay(ts)) hours.append(getHour(ts)) # 查看结果 print("年份列表:", years) # [2020, 2020, 2020] print("月份列表:", months) # [11, 11, 11] print("日期列表:", days) # [1, 1, 1] print("小时列表:", hours) # [0, 1, 2]
方法二:优化解析逻辑(更稳健)
固定索引的方式容易因格式微小变化失效,比如小时部分不带冒号时索引偏移,用字符串分割的方式更通用:
def parse_time(time_str): # 分割日期和时间部分 date_part, time_part = time_str.split(' ') # 分割日期为日、月、年 day_str, month_str, year_str = date_part.split('.') # 处理小时(兼容带/不带冒号的格式) hour_str = time_part.split(':')[0] # 返回四个整数结果 return int(year_str), int(month_str), int(day_str), int(hour_str) time_stamps = ['01.11.2020 00:00', '01.11.2020 01:00', '01.11.2020 02:00'] years = [] months = [] days = [] hours = [] for ts in time_stamps: y, m, d, h = parse_time(ts) years.append(y) months.append(m) days.append(d) hours.append(h) print(years) # [2020, 2020, 2020] print(months) # [11, 11, 11] print(days) # [1, 1, 1] print(hours) # [0, 1, 2]
方法三:用列表推导式简化代码
如果想让代码更简洁,可结合列表推导式和zip一次性生成四个列表:
def parse_time(time_str): date_part, time_part = time_str.split(' ') day_str, month_str, year_str = date_part.split('.') hour_str = time_part.split(':')[0] return int(year_str), int(month_str), int(day_str), int(hour_str) time_stamps = ['01.11.2020 00:00', '01.11.2020 01:00', '01.11.2020 02:00'] # 用zip批量拆分解析结果 years, months, days, hours = zip(*[parse_time(ts) for ts in time_stamps]) # 将元组转换为列表(zip默认返回元组) years = list(years) months = list(months) days = list(days) hours = list(hours)
内容的提问来源于stack exchange,提问作者IsakkJ
相关产品推荐
相关产品推荐

