Python: как читать текст между двумя пустыми строками в строку

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

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

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

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

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

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


person askrrr    schedule 10.10.2014    source источник


Ответы (1)


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

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

person panofish    schedule 10.10.2014