Python如何读取UTF-16 LE BOM编码文件并使用regex处理Premiere导出章节标记
解决方案
只需要在文件打开的代码中显式指定编码格式,无需修改其他逻辑,即可直接适配Premiere Pro导出的UTF-16 LE BOM编码原文件,不需要手动转码每个txt文件。
修改后完整代码
import math import re # 仅修改open函数参数,新增encoding指定,自动处理BOM和UTF-16 LE编码 with open('chapters.txt', 'r', encoding='utf-16') as f: next(f) for line in f: x = re.match(r".*?\t\t\t(\d{2}):(\d{2}):(\d{2}):(\d{2})", line) hrs = int(x.group(1)) mins = int(x.group(2)) secs = int(x.group(3)) frms = int(x.group(4)) minutes = (hrs * 60) + mins seconds = secs + (minutes * 60) milliseconds = (seconds * 1000) frames = math.ceil(frms * 41.7) timestamp = (milliseconds + frames) print(timestamp)
补充说明
- 如果运行后出现乱码或匹配失败的情况,可尝试将
encoding参数值替换为utf-16-le - 代码中帧转毫秒的系数41.7对应24fps的视频(1000/24≈41.666),如果你的视频帧率不是24fps,可将该系数替换为
1000/你的视频实际帧率 - 后续如果需要生成ffmpeg可直接识别的章节格式,直接将输出的毫秒数按ffmpeg要求的元数据规则拼接即可
内容的提问来源于stack exchange,提问作者Sean McNally
相关产品推荐
相关产品推荐

