首页 > 编程语言 >Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空行以及不必要的空格。该脚本会保留字幕索引、字幕时间线以及字幕中的中文内容,并且只保留字幕中的中文内容。它还

Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空行以及不必要的空格。该脚本会保留字幕索引、字幕时间线以及字幕中的中文内容,并且只保留字幕中的中文内容。它还

时间:2024-10-23 12:58:41浏览次数:6  
标签:不必要 srt 字幕 file new path line

Python脚本,它将遍历指定目录下的所有.srt文件,移除其中的不必要的英文字符、不必要的空行以及不必要的空格。该脚本会保留字幕索引、字幕时间线以及字幕中的中文内容,并且只保留字幕中的中文内容。它还会保留字幕行与字幕之间的换行符,同时去掉字幕与字幕之间的不必要的换行符。处理后的内容将被保存为新的.srt文件。

代码:

import os
import re

def is_index_line(line):
    # 检查是否为索引行,通常索引行以数字开头
    return bool(re.match(r'^\d+$', line))

def is_time_line(line):
    # 检查是否为时间线,包含"-->"的行
    return bool(re.search(r'-->', line))

def clean_srt_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()

    new_content = []
    subtitle_block = []
    in_subtitle = False

    for line in lines:
        # 清除空白行
        if not line.strip():
            if subtitle_block:  # 如果当前有字幕块,则添加一个换行符
                new_content.append(line)
            in_subtitle = False  # 重置字幕块状态
            continue

        if is_index_line(line) or is_time_line(line):
            # 如果当前行为索引或时间线,则保存之前的字幕块(如果存在)
            if subtitle_block:
                new_content.extend(subtitle_block)
                new_content.append('')  # 保留字幕块之间的换行符
                subtitle_block = []
            # 添加索引行和时间线
            new_content.append(line)
            in_subtitle = True
        elif in_subtitle:
            # 仅保留字幕中的中文内容
            chinese_only_line = re.sub(r'[^\u4e00-\u9fa5\n]', '', line)
            if chinese_only_line.strip():  # 如果行内有中文字符
                subtitle_block.append(chinese_only_line)

    # 添加最后一个字幕块
    if subtitle_block:
        new_content.extend(subtitle_block)
        new_content.append('')  # 在文件末尾添加一个换行符

    # 保存为新的srt文件
    new_file_path = file_path.replace('.srt', '_cleaned.srt')
    with open(new_file_path, 'w', encoding='utf-8') as new_file:
        new_file.writelines(new_content)

    print(f'Processed and saved cleaned file to: {new_file_path}')

def process_directory(directory_path):
    for filename in os.listdir(directory_path):
        if filename.endswith('.srt'):
            file_path = os.path.join(directory_path, filename)
            clean_srt_file(file_path)

# 指定目录路径
directory_path = r'C:\caijian\29-51'
process_directory(directory_path)

 

标签:不必要,srt,字幕,file,new,path,line
From: https://www.cnblogs.com/jingzaixin/p/18496149

相关文章

  • 【图吧小白教程】免会员导出剪映AI字幕
    额……老铁们,我图吧老字幕组组长了。最近咱不是谈过PCDN放血BT导致宽带封号上传限速问题吗:【图吧杂谈】正确认识PCDN放血BT并导致运营商封号上传限速的问题当时视频版评论区里正好有人提供了清晰度不如4年前!视频变糊是你的错觉吗_-影视飓风这个被视频删除的事,所以垃圾佬也简......
  • 一键AI去除视频水印和字幕!关键还免费!
    我们做网创的,多多少少会去下载很多视频素材,但很多素材自己觉得非常好,但有那该死的水印和字幕就让人非常不爽,要么在剪辑的时候放大把字幕拉出屏幕外,又或者是用黑框该掉字幕,这着实影响美观!有什么办法可以直接去掉字幕和水印吗?答案是有的!今天就给大家分享这个神器:VideoSub......
  • 一键AI去除视频水印和字幕!关键还免费!
    我们做网创的,多多少少会去下载很多视频素材,但很多素材自己觉得非常好,但有那该死的水印和字幕就让人非常不爽,要么在剪辑的时候放大把字幕拉出屏幕外,又或者是用黑框该掉字幕,这着实影响美观!有什么办法可以直接去掉字幕和水印吗?答案是有的!今天就给大家分享这个神器:VideoSub......
  • 一键AI去除视频水印和字幕!关键还免费!
    我们做网创的,多多少少会去下载很多视频素材,但很多素材自己觉得非常好,但有那该死的水印和字幕就让人非常不爽,要么在剪辑的时候放大把字幕拉出屏幕外,又或者是用黑框该掉字幕,这着实影响美观!有什么办法可以直接去掉字幕和水印吗?答案是有的!今天就给大家分享这个神器:VideoSub......
  • 用python写一个脚本:将指定目录下及其所有子文件夹的所有的“srt”文件的内容合并到一
    代码:importosdefmerge_srt_files(source_dir,output_file):"""合并指定目录及其子目录下的所有.srt文件到一个新文件中。:paramsource_dir:源目录路径:paramoutput_file:输出文件路径"""#确保输出文件的目录存在os.makedirs(os.p......
  • 免费在线音频转字幕网站 All In One
    免费在线音频转字幕网站AllInOne利用AI将语音转成文本/使用AI为视频添加字幕freeonlineSpeechtoTextwebsites每天三次免费https://turboscribe.ai/zh-CN/dashboarddemos(......
  • 记ffmpeg subtitles滤镜切换字幕卡顿
    1.subtitles卡顿偷懒在项目中使用ffmpeg的subtitles滤镜进行字幕渲染。后来发现,使用滤镜切换字幕时会出现卡顿。经过进一步测试与代码调式确认,在播放一个时长在一个小时以上的视频文件的内挂字幕时,滤镜初始化花费了较长的时间。使用ffplay+subtitles滤镜播放该文件并显示字幕......
  • 一文详解WebRTC、RTSP、RTMP、SRT
     背景好多开发者,希望对WebRTC、RTSP、RTMP、SRT有个初步的了解,知道什么场景该做怎样的方案选择,本文就四者区别做个大概的介绍。WebRTC提到WebRTC,相信好多开发者第一件事想到的就是低延迟,WebRTC(WebReal-TimeCommunication)是一项实时通讯技术,它允许网络应用或者站点在不借助中间媒......
  • 【YashanDB知识库】decode函数中的子查询被不必要地多次执行
    本文内容转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7441387.html?templateId=1718516问题现象客户向yashandb下发的SQL语句执行时间超过6分钟仍未出结果问题的风险及影响SQL语句性能慢,影响客户业务问题影响的版本所有的yashandb22.2版本23.2版本没有这个问......
  • 删除字幕中的韩文并保存到新的文件中
    代码:importosimportredefremove_korean_text(srt_content):#定义韩文字符的Unicode范围pattern=re.compile(r'[\uac00-\ud7a3]+',re.UNICODE)#使用正则表达式替换韩文字符为空cleaned_content=re.sub(pattern,'',srt_content)return......