将整数转换为小时和分钟

时间:2018-06-29 04:14:10

标签: python

我正在研究一个Python脚本,它将读取文件并获取字符串total_time。目前,这就是我所拥有的。

if("Total time" in data):
                total_time=int(filter(str.isdigit, data))
                print(total_time)

输出:419

我正在尝试找到读取大量文件,获取总时间并将419转换为4小时19分钟的最佳方法,以使我能够对此进行一些静态分析。

3 个答案:

答案 0 :(得分:2)

在大熊猫中将format参数传递给datetime:

t="419"
a = pd.to_datetime(t, format='%H%M')
print(a.hour)
print(a.minute)

答案 1 :(得分:1)

将一些字符串设置为

s = '419'

您可以通过转换为字符串,然后使用模和整数除法来获取高位和低位数字。如果对无效输入有合理的响应,则可以将整数转换封装在try-except块中,并捕获ValueError

n = int(s)
hours = n // 100  # Truncating integer division
minutes = n % 100  # Modulo removes the upper digits

答案 2 :(得分:1)

内置功能divmod()在这里似乎很合适!

>>> a = 5
>>> b = 3
>>> divmod(a,b) # (a // b, a % b)
(1,2) 

针对您的具体情况:

def dataToTime(data):
    ''' Returns a list of (hour, minute) tuples from
        a list of strings '''
    total_times = filter(str.isdigit,data)
    return [divmod(int(time),100) for time in total_times]

如果您想在输入数据时解析数据,请尝试使用re模块来进行正则表达式替换的re.sub()模块

>>> import re

>>> s = '| Total time | 4:19 | | |--------------+--------+------| –'
>>> h = int(re.sub(r':.*$|[^0-9]','',s))
>>> m = int(re.sub(r'^.*:|[^0-9]','',s))
>>> print h,m
(4,19)