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

如何用Python修正WebVTT文件翻译后错误的时间戳格式

修复WebVTT字幕翻译后的时间戳格式错误

问题背景

  • 使用Google翻译API将英文WebVTT字幕翻译至俄语等语言时,部分时间戳的小数点被替换为逗号,例如原格式00:26.760 --> 00:35.000变为00:26,760 --> 00:35.000
  • 问题为间歇性出现,仅影响部分文件和时间戳,Google翻译网页版可正常处理目标文件

解决方案:正则表达式精准替换

利用Python的re模块编写正则规则,专门匹配时间戳中的:dd,ddd格式并替换为:dd.ddd,避免误改字幕文本中的正常逗号。

核心修复代码

在翻译完成后,对存储完整内容的translated变量进行处理:

import re

# 修复时间戳里的逗号为小数点
fixed_content = re.sub(r'(\d{2}):(\d{2}),(\d{3})', r'\1:\2.\3', translated)

规则说明

  • 正则表达式r'(\d{2}):(\d{2}),(\d{3})':精准匹配两位数字:两位数字,三位数字的时间戳片段,确保只定位时间戳中的错误逗号
  • 替换模板r'\1:\2.\3':保留原有数字分组,仅将逗号替换为小数点

整合到现有翻译流程

将修复步骤嵌入现有代码的翻译完成阶段:

from googletrans import GoogleTranslator
import re

translator = GoogleTranslator(source='auto', target=targetlang)
translated = ""

# 分块翻译逻辑(示例)
for chunk in subtitle_chunks:
    translated += translator.translate(chunk)

# 执行时间戳修复
fixed_translated = re.sub(r'(\d{2}):(\d{2}),(\d{3})', r'\1:\2.\3', translated)

# 写入修复后的字幕文件
with open(f"translated_{targetlang}.vtt", "w", encoding="utf-8") as output_file:
    output_file.write(fixed_translated)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:42:09