用Python处理字幕文件
始
下了部老电影,找到了相关的中英文字幕,奇怪的是,英文字幕能正常现实,中文字幕却不可以,我一度以为是Linux下播放器编码的问题,但是怎么更改设置都无效,而我以前在看其他电影时,中文字幕是正常的。所以,怀疑是字幕文件的问题,打开中英文字幕文件对比:
- 英文
5
00:02:53,500 --> 00:02:54,700
Police. Hello?
6
00:03:03,800 --> 00:03:08,000
EVERYONE IS THE MOON
7
00:03:10,100 --> 00:03:13,700
I CAN'T HANG ON ANYMORE
- 中文
5
00:02:53,500 - - > 00:02:54,700
警察。喂?
6
00:03:03,800 - - > 00:03:08,000
每个人都是月亮
7
00:03:10,100 - - > 00:03:13,700
我不能坚持下去了
可以看出,中文字幕的格式有问题,所以我决定用Python的正则表达式修改一下。
代码
import re
with open('./Minazuki 1999.srt', encoding='utf-8') as file:
srt = file.read()
# 第一步多余换行
srt = srt.replace('\n\n', '\n')
# 需要在序号前面补上换行
srt = re.sub(r'\n(\d{1,3})\n', r'\n\n\1\n', srt)
# 修正其他字符错误
srt = srt.replace('- - ', '--')
with open('./Minazuki 1999_new.srt', 'w', encoding='utf-8') as file:
file.write(srt)
- 输出的字幕文件:
5
00:02:53,500 --> 00:02:54,700
警察。喂?
6
00:03:03,800 --> 00:03:08,000
每个人都是月亮
7
00:03:10,100 --> 00:03:13,700
我不能坚持下去了
已经可以正常显示了。
学到的知识点记录
参考了这篇博客, 正则表达式30分钟入门教程。
可是使用()来对正则模式匹配的内容进行编号,在后续中用数字来\数字使用对应的内容,如
srt = re.sub(r'\n(\d{1,3})\n', r'\n\n\1\n', srt)
其中,(\d{1,3})表示的内容,在后面用\1来访问,\0表示整个正则表达式。除了编号,也可以命名,例如(?<Numers>\d{1,3}),在后面可以用\k<Numbers>来访问,不过该方法在我在Python中未成功使用,有待进一步调查。
用Python处理字幕文件的更多相关文章
- python基础之文件处理
读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...
- Python开发【第三篇】:Python基本之文件操作
Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和 file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...
- Python绘制PDF文件~超简单的小程序
Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- python批量进行文件修改操作
python批量修改文件扩展名 在网上下载了一些文件,因为某种原因,扩展名多了一个后缀'.xxx',手动修改的话因为文件太多,改起来费时费力,于是决定写个小脚本进行修改. 1.要点: import r ...
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
- Python基础、文件处理
一.概述 Python中操作文件是通过file对象来处理的,步骤: 指定文件的路径.操作的模式 对文件进行操作,读或写操作 关闭文件对象 f = open( '文件路径','访问模式') # 打开文件 ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- JWPlayer中字幕文件的配置
最近应项目要求研究JWPlayer,视研究进度可能会将解决的问题或者一些配置方法写在这里. jwplayer支持vtt和srt格式的字幕文件,在视频中可以选择加载多个字幕文件(常用于多语言字幕),并且 ...
随机推荐
- dom的节点操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python 框架
支持异步的 python web 框架 tornado 轻量级 flask 框架 flask中文文档 import base64 import random import io import time ...
- MySQL事务提交与回滚
提交 为了演示效果,需要打开两个终端窗口,使用同一个数据库,操作同一张表 step1:连接 终端1:查询商品分类信息 select * from goods_cates; step2:增加数据 终端2 ...
- Nginx 的全局和虚拟主机配置
Httpd.conf nginx.conf my-heavy-innode-4G.cnf php.ini 用中文注释 # user:指定 Nginx Worker 进程运行用户和用户组,默认 nob ...
- 图解Qt安装(Windows平台)
http://c.biancheng.net/view/3858.html 本节介绍 Qt 5.9.0 在 Windows 平台下的安装,请提前下载好 Qt 5.9.0.不知道如何下载 Qt 的读者请 ...
- linux常用的小命令
查看linux版本 uname -a 图上可知,linux内核版本为2.6.32 查看cpu核数 cat /proc/cpuinfo |grep "cores"| uniq 系统中 ...
- modesim 仿真问题
> unisim (ERROR: Library path "d:/Xilinx/14.3/ISE_DS/ISE//vhdl/mti_se/10.1a/nt64/unisim/unis ...
- [转]tKC(The Keyboard Caper)的自传
每个玩儿计算机的朋友都知道破解,或多或少地使用着各种各样的破解,也就逐渐地知道了一些著名的破解团体和破解人,比如:PC(Phrozen Crew).CiA(Crackers in Action)COR ...
- pam模块
main 循环监控 独立的程序 根据配置防护 登陆 ca cert 私有口令 openssl 证书口令??
- 苹果ios开发
苹果上架:https://blog.csdn.net/pcf1995/article/details/79650345