尝试用实际的字幕替换每三行。
背景:我正在借助Videosubfinder和ocr api从音乐视频和电影制作字幕。
emptySub.srt(由Videosubfinder自动创建)
1
00:00:10,076 --> 00:00:15,080
sub duration: 5,004
2
00:00:57,891 --> 00:01:01,694
sub duration: 3,803
subtitle.txt看起来像这样(使用ocr api并遍历图像,您无需查看代码)
I bought some eggs.
He bought some spam.
代码
with open("empty.srt", "a") as file:
for line in file:
# TODO
预期产量
1
00:00:10,076 --> 00:00:15,080
I bought some eggs.
2
00:00:57,891 --> 00:01:01,694
He bought some spam.
我被困住了。如何用我的字幕替换?也许我应该使用我不知道的正则表达式。
编辑:我终于自己解决了
答案 0 :(得分:0)
您想要以下产品的某种变体
subtitleLines = open('subtitle.txt', 'r')
# Creates a list of lines
srtLines = open('srtfile.srt', 'r').readlines()
for (i, line) in enumerate(subtitleLines):
srtLines[3*i + 2] = line
# emit srtLines
这对于KB到〜MBish范围内的文件将表现良好,但是如果文件很大,则您想提高srt file
的速度要比副标题file
快。您如何推进打开的文件?通过调用next()
:
# after reading in subtitle.txt into subtitleFile:
for line in subtitleFile:
for i in range(2):
# Your "next" line will have a newline, so suppress print()'s
# default newline.
print(srtFile.next(), end="")
# advance without printing
srtFile.next()
print line
您将要捕获StopIteration
并决定SRT文件“用尽”后该怎么做-这取决于您是否要验证。
但是请注意,在您的示例中,看起来好像从第3行开始的第4行是字幕行(srt块之间有空白行)。
答案 1 :(得分:0)
subList = []
with open("subtitle.txt", "r") as subFile:
for subLine in subFile:
subList.append(subLine.rstrip())
print(subList)
i = 0
with open("emptySub.srt", "r") as file:
for line in file:
if line.startswith('s'):
line = line.replace(line, subList[i]+'\n')
i = i + 1
with open('newFile.srt','a') as resFile:
resFile.write(line)