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

如何使用Python对文本中的时间戳进行求和计算?

Python 实现时间戳字符串求和

问题背景

给定一个空格分隔的时间戳字符串,其中部分时间戳使用逗号作为小数分隔符(如00:04:44,54),需要计算所有时间戳的总时长。

解决方案

以下是完整的实现代码,包含格式清理、时长累加和结果格式化:

from datetime import timedelta

# 输入的时间戳字符串
timestamp_str = """00:03:45.08 00:06:10.07 00:04:55.46 00:04:09.78 00:04:21.08 00:03:40.40 00:05:23.87 00:04:06.54 00:03:37.22 00:04:05.82 00:06:18.77 00:04:59.04 00:02:56.44 00:04:19.76 00:04:47.39 00:03:30.67 00:04:42.27 00:04:18.71 00:04:45.48 00:03:34.84 00:04:06.15 00:04:44,54 00:04:37.37 00:05:23.74 00:06:26,34 00:04:07.06 00:04:56.44"""

# 1. 拆分字符串并统一小数分隔符(逗号转小数点)
timestamps = [ts.replace(',', '.') for ts in timestamp_str.split()]

# 2. 初始化总时长
total_duration = timedelta()

# 3. 遍历累加每个时间戳的时长
for ts in timestamps:
    try:
        # 拆分时、分、秒部分
        hours_str, mins_str, secs_str = ts.split(':')
        hours = int(hours_str)
        minutes = int(mins_str)
        seconds = float(secs_str)
        
        # 转换为时间间隔并累加
        delta = timedelta(hours=hours, minutes=minutes, seconds=seconds)
        total_duration += delta
    except ValueError as e:
        print(f"跳过无效时间戳 [{ts}]: {str(e)}")

# 4. 格式化总时长为 HH:MM:SS.ss 格式
total_secs = total_duration.total_seconds()
final_hours = int(total_secs // 3600)
remaining_secs = total_secs % 3600
final_mins = int(remaining_secs // 60)
final_secs = remaining_secs % 60

formatted_total = f"{final_hours:02d}:{final_mins:02d}:{final_secs:06.2f}"
print("总时长:", formatted_total)

关键说明

  • 格式统一:将时间戳中的逗号替换为小数点,确保Python能正确解析小数秒部分。
  • 时间间隔累加:使用timedelta类型处理时间间隔,无需手动计算秒数,避免出错且代码更直观。
  • 异常处理:加入try-except块,跳过格式错误的时间戳并输出提示,提升代码健壮性。
  • 结果格式化:将总秒数转换为标准的HH:MM:SS.ss格式,保证输出符合时间戳的样式。

运行结果

执行上述代码后,会输出所有时间戳的总时长:

总时长: 01:59:58.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:20:20