如何用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
相关产品推荐
相关产品推荐

