You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带时间戳字幕文件中的多行断句合并为单行?

解决方案

方法1:使用带正则替换的文本编辑器(如VS Code、Notepad++)

适合快速处理小到中等规模的字幕文件:

  1. 打开目标SRT字幕文件
  2. 开启正则表达式匹配模式(VS Code按Ctrl+F后点击.*图标;Notepad++在替换窗口勾选「正则表达式」)
  3. 查找框输入:(\n)(?!\d+\n|\d{2}:\d{2}:\d{2},\d{3} -->)
    • 逻辑:仅匹配字幕内容内部的换行,排除序号行、时间轴行前后的换行
  4. 替换框输入: (单个空格)
  5. 点击「全部替换」完成合并

方法2:使用命令行工具(sed)

适合批量处理或熟悉终端操作的用户,在Linux/macOS或Windows WSL环境下执行:

sed -E ':a;N;$!ba;s/\n(?!([0-9]+\n|\d{2}:\d{2}:\d{2},\d{3} -->))/ /g' input.srt > output.srt
  • 说明:
    • :a;N;$!ba:将整个文件读入缓冲区,实现跨行匹配
    • 正则规则与编辑器方法一致,把字幕内容内的换行替换为空格
    • input.srt为源文件路径,output.srt为处理后的目标文件

方法3:Python脚本(支持自定义逻辑)

如果需要处理特殊格式或添加额外过滤规则,可使用脚本:

def merge_srt_lines(input_path, output_path):
    with open(input_path, 'r', encoding='utf-8') as f:
        lines = f.read().splitlines()
    
    result = []
    current_subtitle = []
    
    for line in lines:
        # 判断是否为序号行、时间轴行或空行
        if line.isdigit() or '-->' in line or line.strip() == '':
            # 合并累积的字幕内容并写入结果
            if current_subtitle:
                result.append(' '.join(current_subtitle))
                current_subtitle = []
            result.append(line)
        else:
            # 累积字幕内容行
            current_subtitle.append(line.strip())
    
    # 处理最后一条未写入的字幕
    if current_subtitle:
        result.append(' '.join(current_subtitle))
    
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write('\n'.join(result))

# 替换为你的文件路径
merge_srt_lines('input.srt', 'output.srt')
  • 运行脚本后,会自动保留SRT原有结构,仅合并每个条目内的多行字幕

内容的提问来源于stack exchange,提问作者July Elizabeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:58:21