python 批量替换srt文本_自动生成srt格式的脚本(Python实现)

python 批量替换srt文本_自动生成srt格式的脚本(Python实现)用威力导演制作短片 这个软件有个导入 srt 字幕的功能 可以写好文本后一次性导入短片的字幕 比手工在威力导演里写快多了 srt 文本中 每一条字幕的格式是 序号起止时间字幕内容例如 100 00 08 0 gt 00 00 13 0 发展历程 200 00 13 0 gt 00 00 18 02006 年通用产品线正式成立 这种格式在字幕的条数发生变化时修改起来很麻烦 比如一共有 50 条字

用威力导演制作短片,这个软件有个导入srt字幕的功能,可以写好文本后一次性导入短片的字幕,比手工在威力导演里写快多了,srt文本中,每一条字幕的格式是:

序号

起止时间

字幕内容

例如:

1

00:00:08,0 –> 00:00:13,0

发展历程

2

00:00:13,0 –> 00:00:18,0

2006年

通用产品线正式成立

这种格式在字幕的条数发生变化时修改起来很麻烦,比如一共有50条字幕,在第3条后加一条新字幕,则后面47条的序号、起止时间点都要修改,简直是噩梦,为此编写了下面的Python脚本,现在只要将字幕写成如下格式,用脚本处理后就能生成上面要求的格式了:

发展历程

2006年

通用产品线正式成立

其中主要的技术点有(Python 3.1):

时间偏移用timedelta对象,时间点用datetime对象,不能用time对象,因为time对象和timedelta对象不能做和; 时间转换为字符串的方法是strftime() 地址字符串要用“/”代替“\”;

将待处理文件保存为ANSI格式文本,在脚本里配好地址(这里是“f:/视频制作”)就可以了。

下面是脚本内容:

#!/usr/bin/env python

from datetime import datetime, timedelta

if name == ‘main’:

#读原始文件

oriScript = open(‘f:/视频制作/rawScript.srt’,’rt’)

#写目标文件

destScript = open(‘f:/视频制作/destScript.srt’,’wt’)

try:

block = ”

seqNo = 1

startTime = datetime(1980,1,1,0,0,8)

for curLine in oriScript:

#print(len(curLine))

if curLine.isspace() and len(block)>0: #本行是空行

destScript.write(str(seqNo)+’\n’) #写字幕序号

endTime = startTime+timedelta(seconds=5)

#写起止时间:

destScript.write(startTime.strftime(“%X”) + ‘,0 –> ‘+ endTime.strftime(“%X”) + ‘,0\n’)

destScript.write(block+’\n’)

block = ” #清空缓存

seqNo = seqNo + 1 #序号递增

startTime = endTime #本条的终止时间是下一条的起始时间

else:

block = block + curLine #当前行追加到缓存中

finally:

oriScript.close()

destScript.close()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225195.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午9:52
下一篇 2026年3月17日 上午9:53


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号