2014-10-10 3 views
0

Я начинающий программист и Python, и я пишу скрипт для работы с файлами субтитров .srt. Моя проблема в том, что я не знаю, как: прочитать файл и проанализировать текст сначала между началом текста и первой пустой строкой, а затем между этой пустой строкой и следующей пустой строкой до конца файла («проанализировать», например, рассчитать длину его части, преобразовать другую часть в числа и т. д.).Python: как читать текст между двумя пустыми строками в строку

Вы можете прочитать о спецификации формата .srt и посмотреть пример here (тип: Plain); в конце файла есть пустая строка. Я хочу сравнить время/продолжительность отображения каждого подзаголовка с количеством символов в нем. Начиная с начала файла каждый субтитр (с его номером, информацией о продолжительности и текстом) отделяется от следующей пустой строкой («\ n», я могу найти их с sth, как if "\n" in line and len(line) == 2:). Временные коды всегда содержат «->» и всегда заканчиваются на три цифры, поэтому, если у меня есть это в строке, я могу выяснить, где она находится. Проблема заключается в том, мне нужно как-то сделать следующее:

  1. Прочитайте текст субтитров, который может быть 1-3 линии с разрывами строк, вычислить его длину символа.

  2. Прочитать продолжительность, преобразовать в продолжительность в секундах.

  3. Прочитайте номер строки (чтобы иметь возможность выводить ее где-нибудь с моими результатами, например, «продолжительность строки 44 равна 4,54 с»).

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

ответ

0

Регулярные выражения могут быть мощным инструментом, помогающим решить этот тип обработки. Вы можете использовать регулярное выражение для сопоставления или анализа одной записи или всего файла. Если вы не знаете о Regex в python, я настоятельно рекомендую вам сделать несколько уроков по этой теме ... и это должно дать вам массу идей, как это можно применить к вашей проблеме.

Есть много отличных ссылок на эту тему, но вот только один: http://www.diveintopython.net/regular_expressions/