网站建设销售员话术,网站建设郑州公司,企业宣传视频,企业邮箱注册申请免费流程20230812在WIN10下使用python3将SRT格式的字幕转换为SSA格式 2023/8/12 20:58 本文的SSA格式以【Batch Subtitles Converter(批量字幕转换) v1.23】的格式为准#xff01;
1、 缘起#xff1a;网上找到的各种各样的字幕转换软件/小工具都不是让自己完全满意#xff01; 【都…20230812在WIN10下使用python3将SRT格式的字幕转换为SSA格式 2023/8/12 20:58 本文的SSA格式以【Batch Subtitles Converter(批量字幕转换) v1.23】的格式为准
1、 缘起网上找到的各种各样的字幕转换软件/小工具都不是让自己完全满意 【都有各种各样的小瑕疵】 因此决定用python3自己写一个练手 本文的python脚本只处理UTF8编码的SRT格式字幕ANSI编码的SRT格式请自行参照本文修改了 Batch Subtitles Converter(批量字幕转换) v1.23 绿色英文版不能修改/自定义所需要的SSA字幕的位置和颜色/字体/字号。 subresync.exe不支持UTF8编码的字幕且不能修改/自定义所需要的SSA字幕的位置和颜色/字体/字号。 vobsub.dll
技术点 Red.Eye.2005.2160p.BluRay.REMUX.HEVC.DTS-HD.MA.5.1-FGT.cn9.srt 将《迫在眉睫》的英文字母通过google翻译之后的中文SRT格式的字幕转换为SSA格式
path_to_save_txtutf8_file.cn.srt
1 00:02:12,766 -- 00:02:16,099 泰勒·鲍勃和玛丽安·泰勒和我在一起
2 00:02:16,100 -- 00:02:16,900 一秒 path_to_save_txtutf8_file.cn.ssa
[Script Info] ; This is a Sub Station Alpha v4 script. Title: path_to_save_txtutf8_file.cn ScriptType: v4.00 Collisions: Normal PlayDepth: 0
[V4 Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding Style: Default,Tahoma,25,H80ff00,H00ffff,H000008,H000008,-1,0,1,2,0,6,80,80,80,0,134
[Events] Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: Marked0,0:02:12.76,0:02:16.09,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起 Dialogue: Marked0,0:02:16.10,0:02:16.90,Default,NTP,0000,0000,0000,!Effect,一秒 重点将SRT格式的时间轴修改为SSA格式的需要使用python3的字符串处理/分割功能 PYTHON SRT转SSA python 时间轴 字符串拆分 https://www.techiedelight.com/zh/split-string-with-delimiters-python/ 在 Python 中使用分隔符拆分字符串
在 Python 中使用分隔符拆分字符串 Google Translate Icon 这篇文章将讨论如何在 Python 中使用分隔符分割字符串。
1.使用 re.split() 功能 通过模式的出现来拆分字符串的简单解决方案是使用内置函数 re.split().模式可以由一个或多个分隔符组成
在单个分隔符上拆分
要使用单个分隔符拆分字符串您只需将该分隔符传递给 re.split() 功能。
import re if __name__ __main__: s Hello,World res re.split(,, s) # split with comma print(res) # [Hello, World] Microsoft Windows [版本 10.0.19045.2311] (c) Microsoft Corporation。保留所有权利。
C:\Users\Administratorpython Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32 Type help, copyright, credits or license for more information. KeyboardInterrupt temp 00:00:16,533 -- 00:00:18,366 import re temp 00:00:16,533 -- 00:00:18,366 res re.split(:, temp) print(res) [00, 00, 16,533 -- 00, 00, 18,366] res[0] 00 res[1] 00 res[2] 16,533 -- 00 re.split(--, res[2]) [16,533 , 00] res[3] 00 res[4] 18,366 srt2ssa.py
# codingutf-8
import re #f2 open(new_file, w, encodingUTF-8) f2 open(test.ssa, w, encodingUTF-8)
f2.write([Script Info]\n) f2.write(; This is a Sub Station Alpha v4 script.\n) f2.write(Title: 8月7日.cn\n) f2.write(ScriptType: v4.00\n) f2.write(Collisions: Normal\n) f2.write(PlayDepth: 0\n) f2.write(\n) f2.write([V4 Styles]\n) f2.write(Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding\n) f2.write(Style: Default,Tahoma,25,H80ff00,H00ffff,H000008,H000008,-1,0,1,2,0,6,80,80,80,0,134\n) f2.write(\n) f2.write([Events]\n) f2.write(Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\n) #f2.write(Dialogue: Marked0,0:02:12.76,0:02:16.09,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起\n) #with open(file, r, encodingUTF-8) as f: #f open(file, r, encodingUTF-8) f open(path_to_save_txtutf8_file.cn.srt, r, encodingUTF-8) lines f.readlines()
temp 1 xuhao 1;
for line in lines: if temp 1: #f2.write(str(xuhao)) #f2.write(str(\n)) #temp0 temp2 else: #time8 # 2023/8/11 9:09 发现SRT的空格 if len(line) 1: temp1 xuhao xuhao1 #f2.write(line) # 2023/8/11 9:34 中英文字幕干掉空格行之后的时间轴 elif temp 2: temp 3 #res re.split(:, temp) time1 re.split(:, line) #re.split(--, res[2]) #time2 re.split(--, time1[2]) time2 re.split( -- , time1[2]) #Dialogue: Marked0,0:02:12.76,0:02:16.09,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起 #time8 Dialogue: Marked0, time1[0] time1[1] time2[0] time2[1] time1[3] time1[4] ,Default,NTP,0000,0000,0000,!Effect, #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0] : time2[1] : time1[3] : time1[4] ,Default,NTP,0000,0000,0000,!Effect, #print(line.rstrip()) #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0] : time2[1] : time1[3] : time1[4].rstrip() ,Default,NTP,0000,0000,0000,!Effect, #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0] , time2[1] : time1[3] : time1[4].rstrip() ,Default,NTP,0000,0000,0000,!Effect, #Dialogue: Marked0,00:02:12,76, 00:02:16,099,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起 #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0][0:5] , time2[1] : time1[3] : time1[4].rstrip() ,Default,NTP,0000,0000,0000,!Effect, #Dialogue: Marked0,00:02:12,766,00:02:16,099,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起 #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0] , time2[1] : time1[3] : time1[4].rstrip() ,Default,NTP,0000,0000,0000,!Effect, #Dialogue: Marked0,0:02:12.76,0:02:16.09,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起 #Dialogue: Marked0,00:02:12,76,00:02:16,09,Default,NTP,0000,0000,0000,!Effect,泰勒·鲍勃和玛丽安·泰勒和我在一起 #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0][0:5] , time2[1] : time1[3] : time1[4][0:5] ,Default,NTP,0000,0000,0000,!Effect, #time2[0][2] . #time1[4][2] . #time2 re.split( -- , time1[2]) time5 re.split(,, time2[0][0:5]) time6 re.split(,, time1[4][0:5]) #time8 Dialogue: Marked0, time1[0] : time1[1] : time2[0][0:5] , time2[1] : time1[3] : time1[4][0:5] ,Default,NTP,0000,0000,0000,!Effect, time8 Dialogue: Marked0, time1[0] : time1[1] : time5[0] . time5[1] , time2[1] : time1[3] : time6[0] . time6[1] ,Default,NTP,0000,0000,0000,!Effect, #else if temp 2: elif temp 3: #f3.write(line_en) #f4.write(line) #f2.write(line) f2.write(time8 line) #f2.write(\n\n) 参考资料 https://mathpretty.com/10393.html Python字幕转换工具–asstosrt https://fiime.cn/blog/281970 如何实现ass/ssa批量转换srt的脚本 https://www.techiedelight.com/zh/split-string-with-delimiters-python/ 在 Python 中使用分隔符拆分字符串 https://zhuanlan.zhihu.com/p/460511660 python如何切割字符串 TypeError: str object does not support item assignment https://pythonjishu.com/python-error-66/ Python报”TypeError: ‘str’ object does not support item assignment “的原因以及解决办法 https://blog.51cto.com/u_15849381/5801826 python TypeError: ‘str‘ object does not support item assignment 报错解决方法 https://blog.csdn.net/scp_6453/article/details/107866043 解决python中“TypeError ‘str‘ object does not support item assignment”问题 python字符串截取 https://www.ycpai.cn/python/xBRw8f2K.html python怎么截取字符串 print(string[2:8]) # 输出llo, W #for line in lines: python 逐行读取 https://blog.csdn.net/weixin_39662834/article/details/109925505 python逐行获取_Python逐行读取文件内容的三种方法 python if else if https://blog.csdn.net/MeiWenjilu/article/details/127546798 python中的if和if_else以及if_elif_else https://blog.csdn.net/ldgk3ekkd/article/details/126383516 python使用docx模块读写docx文件的方法与docx模块常用方法 https://www.php.cn/faq/395631.html Python读写docx文件的方法