首页 > 编程语言 > 详细

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

时间:2020-01-04 15:32:59      阅读:130      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

 

 

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

原文:https://www.cnblogs.com/abc789/p/12148792.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!