使用Notepad++及Python脚本批量将老友记的srt字幕文件批量转换为json格式
从网上字幕库下载得到的字幕文件压缩包如下图所示:
然后使用7z解压到当前目录,得到的部分文件列表如下(一共有228个字幕文件):
打开其中一个文件查看格式如下:
字符编码是 ANSI 的,需要先批量转换为 UTF-8的格式,可参考: https://www.cnblogs.com/abc789/p/12148402.html
然后再使用如下Python脚本批量转换为json格式。
1 # -*- coding: UTF-8 -*-2 #coding=utf-8
3 from os.path import abspath, dirname
4 import re
5 import sys
6 import shutil
7 import os
8 def proSrtFile(path,srtFile,pathDest):
9 result = list()
10 f = open(path + \'\\\' + srtFile,\'r\')
11 lines = f.readlines()
12 new_line=\'\'
13 is_eng = 0
14 is_chn = 0
15 chn = \'\'
16 eng = \'\'
17 result.append(\'[\')
18 for line in lines:
19 line = line.strip()
20 line = line.lstrip()
21 line = line.replace(\'...\',\' \')
22 line = line.replace(\'\"\',\'\\'\')
23 line = line.replace(\'.\',\'. \')
24 line = line.replace(\',\',\', \')
25 line = line.replace(\'?\',\'? \')
26 line = line.replace(\':\',\': \')
27 line = line.replace(\';\',\'; \')
28 line = line.replace(\'!\',\'! \')
29 line = line.replace(\'. . \',\'. \')
30 if \'-->\' in line:
31 continue
32 line = line.replace(\'-\',\'\')
33 if line == \'\':
34 # 如果中文或英文之一为空则不输出
35 if eng != \'\' and chn != \'\':
36 result.append(\'{"eng":"\' + eng + \'","chn":"\' + chn + \'"},\')
37 is_eng = 0
38 is_chn = 0
39 eng = \'\'
40 chn = \'\'
41 continue
42
43 # 如果这行是数字则写入上一行并重新开始:
44 if line.isdigit():
45 is_eng = 1
46 is_chn = 0
47 eng = \'\'
48 chn = \'\'
49 continue
50 if is_eng == 1:
51 eng = line
52 is_eng = 0
53 is_chn = 1
54 continue
55 if is_chn == 1:
56 chn = line
57 is_eng = 0
58 is_chn = 0
59 continue
60
61 f.close()
62 result.append(\']\')
63 open(pathDest + \'\\\' + srtFile[0:14] +\'.json\',\'w\').write(\'%s\' % \'\n\'.join(result))
64
65 pathSrc="D:\\data\\corona_projects\\LearnEnglishSentences_json\\data\\friends\\001\\"
66 pathDest="D:\\data\\corona_projects\\LearnEnglishSentences_json\\eng"
67 indexList= list()
68 for root, dirs, files in os.walk(pathSrc):
69 for fn in files:
70 if fn[-4:] == \'.srt\':
71
72 print fn
73 indexList.append(\'{"title":"\'+fn[0:14]+\'","file":"\' + fn[0:14] +\'.json"},\')
74 proSrtFile(root,fn,pathDest)
75
76 open(pathDest + \'\\\' + \'x_temp_index.xml\',\'w\').write(\'%s\' % \'\n\'.join(indexList))
77
78 print \'--------------------------------------------\'
79 print pathDest
80 print pathDest + \'\\\' + \'x_temp_index.xml\'
81
在运行之前,注意修改以上脚本的第 65 行,66行 pathSrc 存储了已经转码为UTF8的原始字幕文件的目录,pathDest存储了转换为json格式后输出的目录。
其中一个转换完毕的json文件格式如下图所示:
主要对源文件做了如下转换:英文用eng表示,中文用chn表示,每句中文,英文合并到了一行。并存储成了json格式。
以上是 使用Notepad++及Python脚本批量将老友记的srt字幕文件批量转换为json格式 的全部内容, 来源链接: utcz.com/z/386776.html