Python 读取 SRT 文件教程

1. 整体流程

在学习如何读取 SRT 文件之前,首先要了解 SRT 文件的格式,SRT 文件是一种常见的字幕文件格式,通常包含时间轴和对应的字幕内容。读取 SRT 文件的过程可以分为以下几个步骤:

步骤 操作
1 打开 SRT 文件
2 逐行读取文件内容
3 解析时间轴和字幕内容
4 输出结果

2. 具体操作步骤

步骤 1:打开 SRT 文件

首先,我们需要打开 SRT 文件,可以使用 Python 中的 open 函数来实现:

file = open('subtitle.srt', 'r')  # 打开 SRT 文件

步骤 2:逐行读取文件内容

接下来,我们需要逐行读取文件内容,可以使用 readlines 方法来实现:

lines = file.readlines()  # 逐行读取文件内容

步骤 3:解析时间轴和字幕内容

然后,我们需要解析时间轴和字幕内容,通常 SRT 文件的格式为时间轴和字幕内容交替出现,可以使用正则表达式来匹配时间轴和字幕内容:

import re

subtitles = []
sub_start = None
sub_text = ""

for line in lines:
    if re.match("\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}", line): # 匹配时间轴
        if sub_start:  # 如果存在上一个字幕
            subtitles.append((sub_start, sub_text))  # 添加到字幕列表中
            sub_text = ""
        sub_start = line.strip()  # 记录当前字幕开始时间
    elif line.strip() != "":  # 匹配字幕内容
        sub_text += line.strip() + " "  # 拼接字幕内容
        
# 添加最后一个字幕
if sub_start:
    subtitles.append((sub_start, sub_text))
    

步骤 4:输出结果

最后,我们可以输出解析后的字幕内容:

for i, (start, text) in enumerate(subtitles):
    print(f"Subtitle {i+1}:")
    print(f"Start: {start}")
    print(f"Text: {text}\n")
    
file.close()  # 关闭文件

3. 类图

classDiagram
    class SRTFile {
        - file : File
        + openFile(name : str) : None
        + readLines() : List[str]
        + parseSubtitles(lines : List[str]) : List[Tuple[str, str]]
        + printSubtitles(subtitles : List[Tuple[str, str]]) : None
        + closeFile() : None
    }

4. 序列图

sequenceDiagram
    participant User
    participant SRTFile

    User ->> SRTFile: openFile('subtitle.srt')
    SRTFile ->> SRTFile: readLines()
    SRTFile ->> SRTFile: parseSubtitles()
    SRTFile ->> SRTFile: printSubtitles()
    User ->> SRTFile: closeFile()

通过以上步骤,你就可以成功读取 SRT 文件并解析其中的字幕内容了。希望这篇教程能够帮助你更好地理解如何使用 Python 处理 SRT 文件。如果有任何疑问,欢迎随时向我提问!