首页 > 解决方案 > 如何编写将标签转换为秒的函数?

问题描述

def seconds_to_label_converter(seconds):
    hours = divmod(seconds,3600)[0]
    minutes = divmod(seconds-(hours*3600),60)[0]
    remaining_seconds = seconds-((hours*3600)+(minutes*60))
    if remaining_seconds == 0 and hours == 0 and minutes == 0:
        time_label = "No info"
    elif hours > 1: 
        time_label = f"{hours} Hours {minutes} Minutes {remaining_seconds} Seconds"
    elif hours == 1:
        time_label = f"{hours} Hour {minutes} Minutes {remaining_seconds} Seconds"
    elif hours == 0 and minutes > 1:
        time_label = f"{minutes} Minutes {remaining_seconds} Seconds"
    elif hours == 0 and minutes == 1:
        time_label = f"{minutes} Minute {remaining_seconds} Seconds"
    elif hours == 0 and minutes == 0:
        time_label = f"{remaining_seconds} Seconds"
    print(time_label)

seconds_to_label_converter(21254)

我有一个像这样的“标签转换器”。现在我需要一个相反的功能。但我不知道该怎么做。

例如:

label_to_seconds_converter("5 Hours 54 Minutes 14 Seconds")
# >>> OUTPUT = 21254

标签: pythonfunctionmath

解决方案


尝试这个 :

def label_to_seconds(label):
    times = re.findall(r'\b\d+\s*[hours|minutes|seconds]?\b', label.lower())
    list_len = len(times)
    if list_len == 3:
        return int(times[0].strip()) * 3600 + int(times[0].strip()) * 60 + int(times[0].strip())
    if list_len == 2:
        return int(times[0].strip()) * 60 + int(times[1].strip())
    if list_len == 1:
        return int(times[0].strip())
    else:
        print('Invalid Format')

推荐阅读