Skip to content Skip to sidebar Skip to footer

Python Converting String Hours Minutes To Minutes

So say I have a list like so: runtimes = ['24 min per ep', '1 hr 55 min', '24 min per ep', '25 min per ep', '23 min per ep', '23 min per ep', '23 min

Solution 1:

This is fairly simple just to code without using any special kind of parser:

defparse_runtime(runtime):
    mins = 0
    fields = runtime.split()
    for idx inrange(0, len(fields)-2):
        if fields[idx+1] in ('min', 'mins', 'minutes'):
            mins += int(fields[idx])
        elif fields[idx+1] in ('hr', 'hrs', 'hours'):
            mins += int(fields[idx]) * 60return mins

runtime_mins = []
for runtime in runtimes:
    try:
        mins = parse_runtime(runtime)
        runtime_mins.append(mins)
    except ValueError:
        print('Bad runtime: ' + runtime)

print(runtime_mins)

Solution 2:

In pure python you can try this:

runtimes_min=[]
for r in runtimes:
    r=r.replace('per ep', '')
    hour = 0times = r.split('hr')
    if len(times) > 1:
        hour = times[0]
        minutes = times[1].split('min')[0]
    else:
        minutes=r.split('min')[0].rstrip()
    runtimes_min.append(f"{int(hour)*60 + int(minutes)} min per ep")

Output

['24 min per ep',
 '115 min per ep',
 '24 min per ep',
 '25 min per ep',
 '23 min per ep',
 '23 min per ep',
 '23 min per ep',
 '27 min per ep',
 '24 min per ep',
 '23 min per ep',
 '24 min per ep',
 '22 min per ep',
 '25 min per ep',
 '24 min per ep',
 '23 min per ep',
 '24 min per ep',
 '24 min per ep',
 '24 min per ep',
 '24 min per ep',
 '101 min per ep',
 '87 min per ep',
 '25 min per ep',
 '82 min per ep',
 '30 min per ep',
 '25 min per ep',
 '91 min per ep',
 '124 min per ep',
 '24 min per ep',
 '24 min per ep']

Post a Comment for "Python Converting String Hours Minutes To Minutes"