Python-处理时间介于2和26之间

Python-处理时间介于2和26之间,python,Python,我有一个数据集,其中时间列在2:00:00和26:00:00之间。我想把它转换成0和23之间的时间。 以下是数据示例: 数据类型为字符串。我想从这些行中减去3,但我不知道如何在Python中做到这一点。如果数据一致,可以将时间编辑为字符串,然后将其转换为时间。大概是这样的: import datetime original_time_string = "25:49:34" hour = int(original_time_string[:2]) new_time_stri

我有一个数据集,其中时间列在2:00:00和26:00:00之间。我想把它转换成0和23之间的时间。 以下是数据示例:


数据类型为字符串。我想从这些行中减去3,但我不知道如何在Python中做到这一点。

如果数据一致,可以将时间编辑为字符串,然后将其转换为时间。大概是这样的:

import datetime

original_time_string = "25:49:34"
hour = int(original_time_string[:2])
new_time_string = "{}{}".format(hour-3,original_time_string[2:])
new_time = datetime.datetime.strptime(new_time_string,"%H:%M:%S").time()
老实说,我不明白你为什么要对第三次越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级越级。不是应该是2点吗

print (new_time)
>22:49:34

这可能有点过分,但我非常喜欢使用
arrow
来处理日期。这就是它如何适应时间:

import arrow

def func(t):
    # Split the time str into integers
    hours, minutes, seconds = map(int, t.split(':'))

    # Make a temp arrow object
    a = arrow.get()
    
    # Set the exact time on the arrow object
    replaced = a.replace(hour=hours%24, minute=minutes, second=seconds)

    # Remove 2 hours from the result
    shifted = replaced.shift(hours=-2)

    # Get the new time
    return shifted.format('HH:mm:ss')
结果:

>>> func('25:49:34')
23:49:34

>>> func('02:57:49')
00:57:49
我假设你的意思是减去2小时,但如果不是,就把2改为3

或者,这里是一个具有相同输出的非常简单的解决方案:

':'.join(part if i else str((int(part)-2)%24).zfill(2) for i, part in enumerate(t.split(':')))

你是说2到26岁之间?您的样本的时间低于3!是的,谢谢,我编辑了这个问题。仍然不知道如何处理这个问题。每次都要多3个小时。您是否只想知道如何转换具有以下结构的字符串:“HH:MM:SS”?或者你想知道从文件中读取并再次写入文件的过程吗?因为超出了25小时的范围,我无法将它们转换为时间格式。