【问题标题】:How to convert time written in hours + minutes to minutes only with python如何仅使用python将以小时+分钟编写的时间转换为分钟
【发布时间】:2021-04-29 17:10:53
【问题描述】:

我提取了一个包含电影时间的字符串

2 小时 28 分钟

我想将时间转换为分钟 (2*60+28)

这是我的方法,但我正在寻找一种更简单的方法

ar = time.split()
def split(word):
  return [char for char in word]
if 'h' in ar[0]:
  word = ar[0]
  sp = split(word)
  hours = int(sp[0]) * 60
  mins = re.findall(r'\d+', ar[1])
  time = hours + int(mins[0])
else:
  mins = re.findall(r'\d+', ar[0])
  time = int(mins[0])

【问题讨论】:

  • 你试过什么?请提供MWE

标签: python python-3.x time


【解决方案1】:

如果您有预先确定的格式,codotron 的答案会起作用。但是,对于 Codtron 的回答,小时必须是一位数,分钟必须是 2,并且小时和分钟之间必须有空格。但是,如果输入可以是2hr28min或2h 28min或2 hours and 28 minutes,甚至123 hours 1 minute,那么我们需要解析一些token来提取这两个数字。

为此,我们可以使用正则表达式:

import re
s = input("Time: ")
hm = re.findall("\d+", s) #returns list containing ['hr', 'min']
hm = [int(x) for x in hm]
print(hm[0]*60+hm[1])

输出

>>>Time: 3 hours 40 minutes
>>>220
>>>
>>>Time: 2hr5min
>>>125
>>>
>>>Time: 2h5
>>>125

【讨论】:

    【解决方案2】:

    如果它是你所说的字符串,那么你可以做这样的事情

    s = '2h 28min'
    s = s.split()
    a=int(s[0][:len(s[0])-1])
    b=int(s[1][:len(s[1])-3])
    time = (a*60)+b
    ans = str(time)+'min'
    

    输出

    >>> 148min
    

    编辑:代码错误

    【讨论】:

    • 代码不起作用,它给Traceback (most recent call last): File "C:*******test.py", line 4, in <module> b=int(s[1][:len(s)-3]) ValueError: invalid literal for int() with base 10: '28mi'
    • 哦,是的,对不起,我的错误是 len(s[1]) 我已经更改了答案,您现在可以尝试
    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2021-02-22
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2020-01-28
    • 2019-01-05
    • 2014-12-01
    相关资源
    最近更新 更多