Python 如何将整数转换为时间,而整数实际上是时间数据,但没有分离

Python 如何将整数转换为时间,而整数实际上是时间数据,但没有分离,python,python-3.x,Python,Python 3.x,我的数据包含时间数据,但为整数类型,并且整数之间没有分隔。 我的数据像=[91310,101012,…]事实上它应该是[9:13:10,10:10:12] 如何将其转换为时间格式此方法不检查时间是否正确,即小时将数字格式化为5或6个前导零,然后从字符串中提取2个字符片段: [":".join(f"{n:05}."[-c:2-c] for c in [7,5,3]) for n in data] # ['0:00:00', '0:00:05', '0:00:15', '0:02:35', '0:

我的数据包含时间数据,但为整数类型,并且整数之间没有分隔。 我的数据像=[91310,101012,…]事实上它应该是[9:13:10,10:10:12]


如何将其转换为时间格式此方法不检查时间是否正确,即小时将数字格式化为5或6个前导零,然后从字符串中提取2个字符片段:

[":".join(f"{n:05}."[-c:2-c] for c in [7,5,3]) for n in data]

# ['0:00:00', '0:00:05', '0:00:15', '0:02:35', '0:23:59', '1:35:46', '11:25:32']
如果您在一段时间内使用此功能,并且希望允许小时数超过24小时,甚至是负时间:

data = [112532,3333759,-120503,-1234]

[":".join(f"{n:0{5+(n<0)}}."[-s:-e] for s,e in [(0,5),(5,3),(3,1)]) for n in data]

# ['11:25:32', '333:37:59', '-12:05:03', '-0:12:34']

您可以使用简单的数学运算从整数值中获取小时、分钟和秒。然后,您可以随意将它们格式化为带有适当冒号的字符串,或类似datetime.time对象的格式

如果不希望字符串结果中的小时数前导为零,请从格式字符串中删除第一个:02。如果只需要其中一个结果,则可以很容易地将小时分钟秒的计算内联到格式字符串或datetime.time调用中,从而将整个循环转换为列表:

results = [f'{n // 10000:02}:{n // 100 % 100:02}:{n % 100:02}' for n in data]

你试过什么?请显示到目前为止的工作情况;evalre.subr'\d{1,2}\d{2}\d{2}',r'\1:\2:\3',stryour_data当您说将其转换为时间格式时,您的意思是只在适当的位置添加冒号,还是您想创建类似datetime.time对象的东西?为什么在这里运行eval?当然,您可以删除替换中的额外引号吗?对于这个问题来说,正则表达式似乎有些过分,可以通过非常简单的字符串切片来处理。@Blckknght评估是将结果从字符串返回到列表。这与替换中的额外报价无关。此外,对于切片,您必须运行各种for循环,因为您没有小时/分钟和秒的固定值。那么,您应该运行代码来查看它的功能,并查看评估是否必要。在下载之前尝试一下哦,我看到你正在将整个数字列表转换为一个字符串。这看起来仍然很愚蠢,但至少有点道理。不过,使用eval仍然是一个非常糟糕的主意。使用ast.literal\u eval会更安全,但是,在这里解析Python文本仍然是一件非常麻烦的事情,因为您可以只使用字符串列表,而不使用整个列表的字符串表示。@Blckknght。真正的评估是过分的。谢谢你指出这一点
data = [112532,3333759,-120503,-1234]

[":".join(f"{n:0{5+(n<0)}}."[-s:-e] for s,e in [(0,5),(5,3),(3,1)]) for n in data]

# ['11:25:32', '333:37:59', '-12:05:03', '-0:12:34']
import datetime

results = []
dt_results = []
for n in data:
    hours = n // 10000
    minutes = n // 100 % 100
    seconds = n % 100
    results.append(f'{hours:02}:{minutes:02}:{seconds:02}')
    dt_results.append(datetime.time(hour=hours, minute=minutes, second=seconds))
results = [f'{n // 10000:02}:{n // 100 % 100:02}:{n % 100:02}' for n in data]