用python解决字幕的时间轴问题

我们知道在我们想通过动漫,电影来学习英语,日语或者其它语言时,往往只能找到字幕文件,如.srt 的字幕文件,可是一般它是这样的

1
00:00:00,006 --> 00:00:02,000
- [Voiceover] Hey, this is Ray Villalobos,

2
00:00:02,000 --> 00:00:04,007
Senior Staff Author,
and I wanna welcome you

3
00:00:04,007 --> 00:00:06,001
to a brand new edition

4
00:00:06,001 --> 00:00:09,002
of Building Websites
with Node and Express.js.

有些苦恼是不是,不想要那些时间轴,只有字幕就好了,然后我就可以把这个文件打印出来,把音频截取成几段,然后反复对照着听,这就是需求。

文件操作

# 以下都是在python交互环境下运行
#打开字幕文件
f = open('/Users/user/Desktop/zhimu.txt')
f.read()
用python解决字幕的时间轴问题_第1张图片
读取文件

截图用到的技术:
Command+shift+3:全屏截图,保存截图到桌面
Command+shift+4:鼠标选定区域截图,保存截图到桌面

我们可以看到文件是带\n的,不需要的是时间轴

#遍历每一行,
for each_line in f:
     print(each_line)
用python解决字幕的时间轴问题_第2张图片
解决了换行符问题

这样我们就可以没有换行符\n,文字也一行一行的显示了

lines = list(f)
lines
用python解决字幕的时间轴问题_第3张图片
list

再遍历也可以达到上面的效果。f.seek()的作用是还不是太熟悉
最后记得f.close()

最终代码

f = open('/Users/user/Desktop/zhimu.txt')
for each_line in f:
    if each_line[0:1].isdigit():#如果第一个字母是数字则pass
        pass #这里如果不写任何语句会报错,而pass即不做任何事
    else:
        zm_file = open('/Users/user/Desktop/zm.txt','a')
        # 这里'a'的作用是以写入模式打开,如果文件存在,则在末尾追加
        zm_file.writelines(each_line)
        zm_file.close()
f.close()

string.isdigit()是个字符串的方法,只包含数字则返回true,否则返回false

最终效果展示

- [Voiceover] Hey, this is Ray Villalobos,

Senior Staff Author,
and I wanna welcome you

to a brand new edition

of Building Websites
with Node and Express.js.

In this course, I'm going to show you

结语

这个只是初步尝试,还需要很多改进,想这样通过实际需求,来learning by doing,不断驱动学习python。

目前也刚刚开始学习,博客写的这些内容用到的知识好多在今天之前我也不知道,想记录下来,以后可以复习。更关键的是要做,不会就查资料,方法好不好,代码优不优雅,都没关系,只要自己想做到的效果达到了,需求达到了,就很不错了。那些事情在自己一次次的实践中,慢慢也会解决的。

而我们差的只是一个开始。

python,是一门强大的语言,让它改变我的生活吧

:)

参考:

  1. 廖雪峰老师的文件读写教程
  2. 网易的小甲鱼

你可能感兴趣的:(用python解决字幕的时间轴问题)