使用Python3读取srt(字幕)文件

时间:2011-09-20 17:05:22

标签: python unicode encoding utf-8 python-3.x

我希望能够使用python3读取srt文件。

可在此处找到这些文件:   http://www.opensubtitles.org/

有了这里的信息:   http://en.wikipedia.org/wiki/SubRip

Subrip支持任何编码:例如ascii或unicode。

如果我理解正确,那么我需要指定当我使用pythons read函数时使用哪个解码器。所以我说得对,我需要知道如何对文件进行编码才能做出判断?如果是这样的话,如果我有一百个具有不同来源和语言支持的文件,我如何为每个文件建立该文件?

最终我更愿意,如果我可以转换文件,以便它们都以utf-8编码开始。但是我知道这些文件中的一些可能是一些模糊的编码。

请帮忙,

百里

3 个答案:

答案 0 :(得分:2)

您可以使用charade package(以前为chardet)来检测编码。

答案 1 :(得分:1)

您可以在每个.srt文件的开头检查byte order mark以测试编码。但是,这可能不适用于所有文件,因为它不是必需属性,并且仅在UTF文件中指定。可以通过

进行检查
testStr = b'\xff\xfeOtherdata'

if testStr[0:2] == b'\xff\xfe':
    print('UTF-16 Little Endian')
elif testStr[0:2] == b'\xfe\xff':
    print('UTF-16 Big Endian')
#...

您可能想要做的只是打开文件,然后将从文件中提取的任何内容解码为unicode,处理unicode表示直到您准备好打印,然后再将其编码回来。有关更多信息,请参阅this talk,以及可能相关的代码示例。

答案 2 :(得分:0)

还有一个像样的库来处理SRT文件:

https://pypi.python.org/pypi/pysrt

您可以在打开和写入SRT文件时指定编码。