首页 > 解决方案 > 在使用正则表达式时,我可以让 python 将我的文件读取为 UTF-16 LE BOM 吗?

问题描述

我正在尝试编写一段代码,它将获取从 Premiere Pro 导出的章节标记的文本文件,并将其转换为 ffmpeg 可读的格式。

问题是,它们作为 Notepad++ 报告为 UTF-16 LE BOM 的文件出现。如果我将其更改为 UTF-8 然后保存,我的代码将正常工作。但是,我想知道是否有更简单的方法来修改我的代码而不是转换每个 .txt 文件。

这是一个测试代码,只是将时间戳从 hh:mm:ss:ff 转换为毫秒并打印出来。同样,它适用于 UTF-8 文件:

import math
import re

with open('chapters.txt', 'r') 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)

Premiere Pro 中的文件如下所示:

    Asset Name              In Point            Description 
    video           00:03:45:10                         
    video           00:12:26:19                         
    video           00:22:30:07                         
    video           00:34:42:22                         

免责声明:我不知道我在做什么。

标签: pythonpython-3.xregexutf-8utf-16

解决方案


推荐阅读