2014-10-10 29 views
0

我是編程和Python的初學者,我正在編寫一個腳本來處理.srt字幕文件。我的問題是,我不知道如何:通過文件讀取文本,首先在文本的開頭和第一個空行之間分析文本,然後在該空行和下一個空行之間分析文本直到文件的結尾(通過例如計算其一部分的長度來「分析」,將另一部分轉換爲數字等)。Python:如何將兩個空行之間的文本讀入字符串

您可以閱讀.srt格式規範並查看示例here(type:Plain);文件末尾有空行。我想比較每個字幕的顯示時間/持續時間與其中的字符數量。從文件的開頭開始,每個字幕(帶有它的編號,持續時間信息和文本)與空行(一個「\ n」,我可以像if "\n" in line and len(line) == 2:那樣找到它們)從下一個字幕中分離出來。時間碼總是包含一個「 - >」,並且總是以三位數結尾,所以如果我在一個字符串中有這個數字,我可以確定它在哪裏。問題是,我需要以某種方式做到以下幾點:

  1. 閱讀字幕文本,可以是1-3線換行,計算它的字符長度。

  2. 閱讀持續時間,轉換爲以秒爲單位的持續時間。

  3. 讀取行號(以便能夠將結果輸出到某處,例如「第44行的持續時間爲4.54秒」)。

我可以做第二容易,但我不知道如何去在整個文件,並告訴Python的:找到每個字幕文本的結束,計算各行的字符長度,添加,讀取持續時間,將它們分開,用行號輸出它,然後對下一個字幕執行相同操作,直到到達文件末尾。如果它是一個字幕,我可以很容易地做到,但我不知道如何做一個單一的檢查,然後尋找下一個。我一直在尋找2小時,並找不到這樣的事情。

回答

0

正則表達式可以成爲幫助解決此類處理的強大工具。 您可以使用正則表達式來匹配或解析單個記錄或整個文件。 如果你不知道Python中的正則表達式,我強烈建議你在這個主題上做一些教程......並且應該給你很多想法如何將它應用於你的問題。

關於這個話題有很多很好的參考文獻,但這裏只是一個:http://www.diveintopython.net/regular_expressions/

相關問題