Чтение файлов srt (субтитров) с помощью Python3 - PullRequest
2 голосов
/ 20 сентября 2011

Я хочу иметь возможность прочитать файл srt с python3.

Эти файлы можно найти здесь: http://www.opensubtitles.org/

С информацией здесь: http://en.wikipedia.org/wiki/SubRip

Subrip поддерживает любую кодировку: например, ascii или unicode.

Если я правильно понимаю, мне нужно указать, какой декодер использовать, когда я использую функцию чтения питонов. Так я прав, говоря, что мне нужно знать, как файл закодирован, чтобы принять такое решение? Если да, то как мне установить это для каждого файла, если у меня есть сто таких файлов с различными источниками и поддержкой языков?

В конечном счете, я бы предпочел, чтобы я мог преобразовать файлы так, чтобы они все были в кодировке utf-8 для начала. Но некоторые из этих файлов могут быть неясной кодировкой, насколько я знаю.

Пожалуйста, помогите,

Barry

Ответы [ 3 ]

2 голосов
/ 21 сентября 2011

Вы можете использовать пакет charade (ранее chardet) для определения кодировки.

1 голос
/ 20 сентября 2011

Вы можете проверить метку порядка байтов в начале каждого .srt файла для проверки на кодировку. Тем не менее, это, вероятно, не будет работать для всех файлов, поскольку это не обязательный атрибут, и в любом случае он указывается только в 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 до тех пор, пока вы не будете готовы к печати, а затем закодировать его снова. См. этот доклад для получения дополнительной информации и примеров кода, которые могут иметь отношение.

0 голосов
/ 09 июля 2014

Есть также приличная библиотека для обработки файлов SRT:

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

Вы можете указать кодировку при открытии и записи файлов SRT.

...