You need to enable JavaScript to run this app. 字幕文本清洗:咨询无句号结尾行自动合并的实现方案
优惠活动
大模型
产品
解决方案
定价
更多

字幕文本清洗:咨询无句号结尾行自动合并的实现方案

字幕断行合并的可行实现方案

核心需求是逐行扫描文本,把未以句号结尾的断行自动和后续关联行拼接,最终输出的所有文本行都以句号收尾,以下是不同场景下的可落地方案:

通用文本编辑器正则快速处理

这是无代码量要求的最快方案,VS Code、Notepad++、Sublime Text等支持正则替换的编辑器都能直接用。
操作步骤:

  • 先做一次行尾清理:用匹配规则 [ \t]+$ 替换为空,把每一行结尾多余的空格、制表符删掉,避免末尾空白干扰句尾判断
  • 再执行替换:用匹配规则 ([^.])\n 替换为 $1
  • 替换完成后逐行检查,所有非句号结尾的断行就会自动把换行替换为空格,和下一行拼接成完整句子
    *注意:如果文本里存在大量非句尾的句号(比如缩写Mr.、文件路径),简单正则可能会出现误切分,这种场景不适合用纯正则处理。

自定义脚本适配定制需求

如果有更复杂的判断规则,写轻量脚本的灵活性最高,核心处理逻辑非常简单,没有复杂的算法成本:

  1. 预处理:把原始文本按换行拆成逐行列表,删除首尾空白、过滤完全为空的行
  2. 用临时缓存暂存未完成拼接的碎片行
  3. 逐行遍历:把新行和缓存内容拼接,判断拼接后的内容是否以句号结尾
    • 是:把拼接完成的内容作为有效行输出,清空缓存
    • 否:保留缓存,继续拼接下一行
  4. 遍历结束后如果还有残留的缓存内容,手动补加句号保证格式合规
    最小化Python实现示例:
def merge_subtitle_fragments(raw_content):
    # 预处理行内容,剔除空行和首尾空白
    cleaned_lines = [line.strip() for line in raw_content.splitlines() if line.strip()]
    merged_output = []
    line_buffer = ""
    for current_line in cleaned_lines:
        if not line_buffer:
            line_buffer = current_line
        else:
            line_buffer += " " + current_line
        # 判断当前拼接完成的句子是否以句号收尾
        if line_buffer.endswith("."):
            merged_output.append(line_buffer)
            line_buffer = ""
    # 处理最后残留的无句号行
    if line_buffer:
        merged_output.append(f"{line_buffer}.")
    return "\n".join(merged_output)

用这个函数处理给出的示例输入,得到的结果和预期完全一致;同时可以根据实际需求灵活加规则,比如识别缩写后的句号不算句尾、过滤字幕里的时间轴标签、自动修正拼接后的大小写问题。

专业字幕工具内置功能

如果本身就在做字幕校对工作,常用的Aegisub、Subtitle Edit这类专业字幕工具,大多自带「断行合并」功能,只要在设置里把半角句号加入句尾标点匹配列表,开启自动合并非句尾断行的规则,就能一键完成批量处理,不需要额外写代码或正则,适配专业字幕的处理流程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 05:54:05