使用Notepad++及Python脚本批量将老友记的srt字幕文件批量转换为json格式

python

从网上字幕库下载得到的字幕文件压缩包如下图所示:

 

 

然后使用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

回到顶部