webvtt字幕转srt字幕的python程序(附改名程序)
2016-01-19 20:06
741 查看
最近写了两个比较简单的python程序,原有都是由于看公开课感觉比较费劲,一个是下载的视频无用的名字太长,另一个就是下载的vtt字幕播放器不识别,写了一个vtt转换成str字幕格式的文件
vtt to str比较简单:
大概就是打开一个vtt文件,把开头的webvtt删掉,把所有的"."替换成",",把后缀名改成srt。参考下面两个网页
http://mooc.guokr.com/post/615236/
/article/1815640.html
要是单纯的吧vtt改成srt。播放时的确会显示字幕,但是字幕会无视时间轴,一个劲的走,根本起不到字幕的作用。
要是一个个用记事本打开,重复的操作这些工作还是比较恶心。毕竟mooc一份时间比较短,总份数又比较多。
我的方法就是读出文件后,用split('.'),把所有的内容分割起来,再 str1+ ',' + str2 迭代起来把所有的内容拼接起来,这样完成了替换。
用str = listvtt[0][8:]的方式删掉了WEBVTT\n\n 这8个字符。最后重新建立一个同样名字的srt字幕文件
下面就是我的具体实现
闲话不多说,其实主要的就是用到了python 的 os包中的 changename 以及python的文件读写。
changename 比较无脑,
文件读写就是把文件的内容读出来——就是读成一个str,修改这个str,并写入到文件中。
程序很简单,而且python不愧是思考问题最简单易行的方法。
changname 非常简陋:
这个就是根据文件名的特点,提取了最后一个也就是我想要的内容并更改名字,而且也是一次性的把文件夹里所有的文件名都改了,有点不太智能。但也够用了 :P
而且这个程序我是直接在idle 中用的,比较简单与原始
vtt to str比较简单:
大概就是打开一个vtt文件,把开头的webvtt删掉,把所有的"."替换成",",把后缀名改成srt。参考下面两个网页
http://mooc.guokr.com/post/615236/
/article/1815640.html
要是单纯的吧vtt改成srt。播放时的确会显示字幕,但是字幕会无视时间轴,一个劲的走,根本起不到字幕的作用。
要是一个个用记事本打开,重复的操作这些工作还是比较恶心。毕竟mooc一份时间比较短,总份数又比较多。
我的方法就是读出文件后,用split('.'),把所有的内容分割起来,再 str1+ ',' + str2 迭代起来把所有的内容拼接起来,这样完成了替换。
用str = listvtt[0][8:]的方式删掉了WEBVTT\n\n 这8个字符。最后重新建立一个同样名字的srt字幕文件
下面就是我的具体实现
#4到9行是把路径中所有的vtt文件找出来
#os.listdir(path) 返回一个内容是path所有文件名的数组
#coding = utf-8 import os path = r"E:\folders" vttName = [] for i in os.listdir(path): name = i.split('.') if name[-1] == 'vtt': vttName.append(i) for vttname in vttName: vtt = open(path + "\\" + vttname) filevtt = vtt.read() vtt.close() #print filevtt listvtt = filevtt.split('.') #print listvtt #print listvtt[0][8:] strvtt = listvtt[0][8:] for i in range(1 , len(listvtt) ): strvtt = strvtt + "," + listvtt[i] #print strvtt srtName = vttname.split('.') srt = open(path + '\\' + srtName[0] + '.srt','w') srt.write(strvtt) srt.close()
#listvtt[0]是vtt文件的在第一个'.'好的所有内容,由于vtt的文件格式前面为WEBVTT\n\n 正好可以删去 用了魔术数字 8
闲话不多说,其实主要的就是用到了python 的 os包中的 changename 以及python的文件读写。
changename 比较无脑,
文件读写就是把文件的内容读出来——就是读成一个str,修改这个str,并写入到文件中。
程序很简单,而且python不愧是思考问题最简单易行的方法。
changname 非常简陋:
path = 'E:\\folders' for files in os.listdir(path): print files p = files.split('_') print p print p[-1] oldname = path + '//' + files newname = path + '//' + p[-1] os.rename(oldname, newname)
这个就是根据文件名的特点,提取了最后一个也就是我想要的内容并更改名字,而且也是一次性的把文件夹里所有的文件名都改了,有点不太智能。但也够用了 :P
而且这个程序我是直接在idle 中用的,比较简单与原始
相关文章推荐
- Python-map()函数格式化不规则输入
- python 实现布尔莎转换模型
- Python-用filter()删除1~100的素数和一些思考
- python 下载整个站点
- Python字典的json格式化处理
- python threading的学习
- Python批量将excel文件转化为txt
- 使用Python处理目录(二):计算某个目录下特定文件类型中文件总行数
- 使用Python处理目录(一):打印目录下的文件名
- python string与list互转
- python简单爬虫--转源码
- python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)
- python 函数操作
- Python 线程池 最简单例子
- python int方法
- 【LEETCODE】48-Rotate Image [Python]
- The Python GTK+ 3 Tutorial
- mac上python使用
- Python输出字符奇数位置
- Python中使用Queue和Condition进行线程同步的方法