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

Python新手求助:如何计算带Timecode Tags的文本中广告总时长?

计算广告总时长的Python实现步骤

步骤1:提取广告的开始/结束时间

用正则表达式匹配文本中广告块的时间对,精准捕获<time="HH:MM:SS"><type=ad>...</time="HH:MM:SS"></type=ad>结构里的开始、结束时间。

步骤2:时间转换为总秒数

把HH:MM:SS格式的字符串转成总秒数,方便计算时长差值。比如08:02:24可转换为8*3600 + 2*60 +24 = 28944秒。

步骤3:计算单条广告时长并求和

用结束时间的秒数减去开始时间的秒数得到单条广告时长,累加所有广告时长后,再转回HH:MM:SS格式输出。


完整代码示例

import re

# 待处理的中文文本
text = '<time="08:00:00"><type=ad> 一些文本1 <time="08:02:24"></type=ad> 一些文本2 <time="08:10:18"><type=ad> 一些文本3 <time="08:12:20"></type=ad>'

# 正则匹配所有广告块的时间对
pattern = r'<time="(\d{2}:\d{2}:\d{2})"><type=ad>.*?<time="(\d{2}:\d{2}:\d{2})"></type=ad>'
time_pairs = re.findall(pattern, text, re.DOTALL)

def time_to_sec(time_str):
    """将HH:MM:SS转换为总秒数"""
    h, m, s = map(int, time_str.split(':'))
    return h * 3600 + m * 60 + s

total_duration = 0
# 遍历计算每条广告时长并累加
for start, end in time_pairs:
    start_sec = time_to_sec(start)
    end_sec = time_to_sec(end)
    duration = end_sec - start_sec
    total_duration += duration
    print(f"单条广告时长:{start} -> {end},时长 {duration//3600}:{(duration%3600)//60}:{duration%60}")

# 总时长转HH:MM:SS格式输出
h = total_duration // 3600
m = (total_duration % 3600) // 60
s = total_duration % 60
print(f"\n广告总时长:{h:02d}:{m:02d}:{s:02d}")

代码说明

  • re.findall搭配re.DOTALL可以匹配带换行的广告文本,确保所有广告块都被捕获。
  • time_to_sec函数简化了时间格式转换,避免重复计算。
  • 输出单条广告时长方便核对,总时长格式化后更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:25:24