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

如何使用Python合并多个SRT字幕文件并修正序号错乱问题

SRT字幕合并序号重复问题修复方案

问题原因

你当前的脚本只是简单拼接文件内容,没有处理每个SRT文件独立从1开始的序号字段,因此会出现序号重复的问题。

解决思路

由于你已经保证输入文件的时间轴是按先后顺序排列的,我们只需要在遍历文件内容时,识别原有字幕的序号行,替换为全局连续的新序号即可,其余内容(时间轴、字幕内容、空分隔行)保持不变。

轻量修复代码

filenames = ['sub1.srt', 'sub2.srt']
current_index = 1  # 全局连续序号,从1开始

with open('output_file.srt', 'w', encoding='utf-8') as outfile:
    for fname in filenames:
        with open(fname, encoding='utf-8') as infile:
            for line in infile:
                stripped_line = line.strip()
                # 判断当前行是否为纯数字的序号行
                if stripped_line.isdigit():
                    # 替换为新的连续序号,保留原有换行符
                    outfile.write(f"{current_index}\n")
                    current_index += 1
                else:
                    # 非序号行直接写入
                    outfile.write(line)

代码说明

  • 新增current_index变量作为全局序号计数器,初始值为1
  • 逐行读取内容时,判断当前行是否为纯数字(即原SRT的序号行),如果是就写入当前的全局序号,同时计数器加1
  • 其余非序号行(时间轴、字幕内容、空行)直接原封不动写入输出文件
  • 额外添加了encoding='utf-8'参数,避免不同编码的字幕文件出现乱码问题

高兼容修复方案

如果你的字幕内容存在单独一行是纯数字的情况,上述判断逻辑会误判,此时可以使用更严谨的按块解析SRT的方案,代码如下:

import re

def parse_srt(file_path):
    """解析单个SRT文件,返回所有字幕条目列表,每个条目为(时间轴行, 字幕内容行列表)"""
    with open(file_path, encoding='utf-8') as f:
        content = f.read()
    # 正则匹配SRT的每个条目:数字 + 时间轴 + 字幕内容 + 空行
    pattern = re.compile(r'\d+\n(\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3})\n(.*?)\n\n', re.DOTALL)
    items = []
    for match in pattern.finditer(content):
        time_line = match.group(1)
        content_lines = match.group(2)
        items.append((time_line, content_lines))
    return items

filenames = ['sub1.srt', 'sub2.srt']
all_items = []
# 读取所有文件的条目
for fname in filenames:
    all_items.extend(parse_srt(fname))

# 重新编号写入输出文件
with open('output_file.srt', 'w', encoding='utf-8') as f:
    for idx, (time_line, content_lines) in enumerate(all_items, start=1):
        f.write(f"{idx}\n")
        f.write(f"{time_line}\n")
        f.write(f"{content_lines}\n\n")

该方案通过正则严格匹配SRT条目结构,不会受到字幕内容里数字的影响,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:24:03