2011-09-20 22 views
2

私はpython3でsrtファイルを読むことができます。Python3でsrt(字幕)ファイルを読む

これらのファイルは、ここで見つけることができます:ここでの情報と http://www.opensubtitles.org/

: はhttp://en.wikipedia.org/wiki/SubRip

Subripは、任意のエンコーディングをサポートしています。ASCIIまたはUnicodeを、例えば。

私が正しく理解するなら、私は秘書の読み取り機能を使用するときに使用するデコーダを指定する必要があります。だから私は、この判断をするためにファイルがどのようにコード化されているかを知る必要があると言っているのは間違いないでしょうか?そうであれば、ソースと言語のサポートが異なる100のファイルがあれば、どのようにファイルごとにそれを設定できますか?

最終的に私はutf-8エンコーディングで始まるようにファイルを変換できるのが好きです。しかし、これらのファイルのいくつかは、私が知っているすべてのもののためのあいまいなエンコードであるかもしれません。

を助けてくださいバリー

答えて

1

あなたはエンコーディングをテストするために、各.srtファイルの先頭にbyte order markをチェックすることができます。ただし、これは必須の属性ではないため、すべてのファイルで機能するとは限りません。とにかくUTFファイルでのみ指定されています。チェックは単に、あなたのファイルを開いて、あなたがユニコードにファイルから撤退どんなデコード、あなたが印刷する準備が整うまで、Unicode表現に対処されており、あなたはおそらく何をしたいのか

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') 
#... 

により行うことができますそれを再びエンコードします。詳細および関連するコードサンプルについては、this talkを参照してください。

+0

ありがとうbrc!どのようにbomがpythonを使って与えられたファイルのために存在するか、そしてこのbomに関連するデータをどのように出力するのか? – Baz

+0

サンプルを含めるように答えを編集しました – brc

0

SRTファイルを処理するためのまともなライブラリもあります:

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

SRTファイルを開くと書くときは、エンコーディングを指定することができます。

関連する問題