我正在研究一个Python脚本,它将读取文件并获取字符串total_time
。目前,这就是我所拥有的。
if("Total time" in data):
total_time=int(filter(str.isdigit, data))
print(total_time)
输出:419
我正在尝试找到读取大量文件,获取总时间并将419转换为4小时19分钟的最佳方法,以使我能够对此进行一些静态分析。
答案 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)