You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从给定的Timedelta列表中提取仅时间部分内容?

提取Timedelta列表中的时间部分

嘿,这个问题我之前刚好处理过,其实有几种简单的方式可以搞定!

方法一:直接字符串切片(最快捷)

你给出的所有Timedelta对象的字符串表示都是"0 days HH:MM:SS.ffffff"格式,所以我们可以直接把每个对象转成字符串后,切掉开头的"0 days "部分(刚好是9个字符):

from datetime import timedelta

# 你的Timedelta列表
delta_list = [
    timedelta('0 days 00:02:39.210526'),
    timedelta('0 days 00:03:29.033333'),
    timedelta('0 days 00:03:36.333333'),
    timedelta('0 days 00:01:04'),
    timedelta('0 days 00:04:05.571428'),
    timedelta('0 days 00:04:00.500000'),
    timedelta('0 days 00:03:54.583333')
]

# 提取时间部分
time_parts = [str(delta)[9:] for delta in delta_list]
print(time_parts)

运行后会得到这样的结果:

['00:02:39.210526', '00:03:29.033333', '00:03:36.333333', '00:01:04', '00:04:05.571428', '00:04:00.500000', '00:03:54.583333']

方法二:自定义格式化(更灵活)

如果需要对时间格式做调整(比如去掉微秒、或者处理超过1天的Timedelta),可以通过计算总秒数来手动格式化:

比如想要去掉微秒的版本:

def format_delta(delta):
    total_sec = int(delta.total_seconds())
    hours = total_sec // 3600
    mins = (total_sec % 3600) // 60
    secs = total_sec % 60
    return f"{hours:02d}:{mins:02d}:{secs:02d}"

# 应用到列表
time_parts_no_ms = [format_delta(d) for d in delta_list]
print(time_parts_no_ms)

输出结果:

['00:02:39', '00:03:29', '00:03:36', '00:01:04', '00:04:05', '00:04:00', '00:03:54']

如果需要保留微秒,只需要在函数里加上微秒的处理就行:

def format_delta_with_ms(delta):
    total_sec = int(delta.total_seconds())
    hours = total_sec // 3600
    mins = (total_sec % 3600) // 60
    secs = total_sec % 60
    ms = delta.microseconds
    return f"{hours:02d}:{mins:02d}:{secs:02d}.{ms:06d}"

小提示

如果你的Timedelta有可能超过1天(比如3 days 05:10:20),那第一种切片方法就不适用了,这时候可以用方法二,把天数转换成小时加到总小时数里:

def format_long_delta(delta):
    total_hours = delta.days * 24 + (delta.seconds // 3600)
    mins = (delta.seconds % 3600) // 60
    secs = delta.seconds % 60
    return f"{total_hours:02d}:{mins:02d}:{secs:02d}"

内容的提问来源于stack exchange,提问作者chu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:01:18