跳至主要內容
SubtitleMatrix

SRT 轉 CSV

格式轉換SubRip(SRT)
或者貼上字幕文字

這次轉換會改變什麼

這個方向不會遺失內容 —— 來源格式的每一項特性在目標格式裡都有地方可去。

這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。

這一頁把字幕寫成一張試算表:三欄,標題是 start、end、text,一條字幕一列。時間碼用點而不是逗號——00:00:01.000——因為逗號是欄位分隔符,原樣的 SRT 時間碼會把同一列拆成好幾欄,後面全部錯位。

含有逗號或換行的文字會加上引號,這是 CSV 標準要求的寫法,所以一條兩行的字幕仍然是一列,換行留在被引號包住的欄位裡。每條字幕的開始與結束都會寫出來,這也是值得匯出成表格的原因:可以依時間排序、找出重疊的字幕、整欄向下填寫,或把表格交給更習慣試算表的人。編號不會單獨佔一欄,順序由列序表達。

編輯是雙向的——CSV 轉 SRT 那一頁會照欄位標題把表格讀回來——所以試算表可以是流程的一部分,而不是終點。單一檔案或整季影集都行,佇列依序處理、可中途停止,結果打包成一個 ZIP;轉換在瀏覽器裡完成,檔案不上傳。

範例

一份典型的 SRT 檔案轉成 CSV

輸入

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

輸出

start,end,text
00:00:01.000,00:00:03.500,Hello there.
00:00:03.500,00:00:06.000,"<i>Whispering</i> now.
And a second line."
00:00:06.000,00:00:09.250,<b>Bold</b> statement.

這個方向沒有遺失東西:起止時間與文字都在表裡,逐列對照即可。

同一轉換遇到一份格式不規則的輸入

輸入

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

輸出

start,end,text
00:00:01.000,00:00:03.500,<b>Bold</b> and <i>italic</i>.
00:00:03.500,00:00:06.000,
00:00:08.000,00:00:09.000,Last one.

不規則檔案裡的空行與多餘空白不會改變欄位數;解析器先修好條目,再依同一套 CSV 規則寫出。

常見問題

SRT 轉 CSV 後是哪三欄?

start、end、text,順序固定,並有一列標題。讀取方靠標題判斷哪一欄是哪一欄,所以重新命名標題不會改變轉換結果。

SRT 轉 CSV 的時間碼為什麼用小數點而不用逗號?

因為逗號是欄位分隔符。照 SRT 原樣寫的 00:00:01,000 會被讀成兩欄,每一列都比標題多一欄,整張表就錯了;小數點讓數值不必加引號也不會產生歧義。

SRT 轉 CSV 時一條兩行字幕會變成兩列嗎?

不會。它仍是一列,換行留在被引號包住的 text 欄位裡,這是 CSV 儲存換行的標準做法;試算表會顯示成一格兩行,而不是兩列。

SRT 轉 CSV 會遺失時間軸嗎?

不會。開始與結束時間都在表格裡,所以這個方向可逆;這也是它和純文字頁的差別——那一頁只在你只要文字時使用。

SRT 轉 CSV 後可以改表格再轉回字幕嗎?

可以。CSV 轉 SRT 那一頁會照標題讀取表格,所以你可以排序、改時間、修錯字或新增一列,再把結果轉回字幕檔。

相關工具