首页 > 解决方案 > 将脚本 .srt 文件解析为可读文本

问题描述

我有一个视频脚本 SRT 文件,其中包含传统 SRT 格式的行。这是一个例子:

1
00:00:00,710 --> 00:00:03,220
Lorem ipsum dolor sit amet
consectetur, adipisicing elit.

2
00:00:03,220 --> 00:00:05,970
Dignissimos et quod laboriosam
iure magni expedita

3
00:00:05,970 --> 00:00:09,130
nisi, quis quaerat. Rem, facere!

我正在尝试使用 python 读取然后解析该文件,删除(或跳过)包含数字字符串的行(例如,SKIP '1' & '00:00:00,710 --> 00:00:03,220 ') 然后对剩余的文本行进行格式化,以便将它们连接起来并以可读的格式呈现。这是我尝试生成的输出示例:

Lorem ipsum dolor 坐在 amet consectetur,adipisicing 精英。Dignissimos et quod laboriosam iure magni expedita nisi, quis quaerat。雷姆,脸!

这是我到目前为止提出的代码:

def main():
    # Access folder in filesystem

    # After parsing content of file, move to next file

    # Declare variable empty list
    lineList = []

    # read file line by line
    file = open( "/Sample-SRT-File.srt", "r")
    lines = file.readlines()
    file.close()

    # look for patterns and parse

    # Remove blank lines from file
    lines = [i for i in lines if i[:-1]]

    # Discount first and second line of each segment using a match pattern
    for line in lines:
        line = line.strip()
        if isinstance(line[0], int) != False:

            # store all text into a list
            lineList.append(line)

    # for every item in the list that ends with '', '.', '?', or '!', append a space at end
    for line in lineList:
        line = line + ' '

    # Finish with list.join() to bring everything together
    text = ''.join(lineList)
    print(text)

main()

我对我的 Python 的实践非常陌生,但现在我想知道是否有效和可靠地匹配段的第一行和第二行以进行删除或跳过的唯一方法是使用正则表达式。否则,这可能使用 itertools 库或某种可以跳过第 1 行和第 2 行以及任何空白行的函数来实现。

有没有人用 Python 移动来帮助我克服这个问题?

标签: pythonsrt

解决方案


我只会使用像pysrt这样的库来解析 srt 文件。这应该被证明是最强大的。

import pysrt
subs = pysrt.open("foo.srt")

for sub in subs:
    print(sub.text)
    print()

输出:

Lorem ipsum dolor sit amet
consectetur, adipisicing elit.

Dignissimos et quod laboriosam
iure magni expedita

nisi, quis quaerat. Rem, facere!

推荐阅读