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

使用youtube_transcript_api转写YouTube视频输出文本无单词间隔如何解决

YouTube字幕提取单词粘连问题解决方案

问题根源

YouTubeTranscriptApi返回的每条字幕对应视频的一个时间轴片段,text字段本身末尾没有预留空格,现有代码直接拼接所有text内容时,前一个片段的末尾单词会和后一个片段的开头单词直接连接,最终产生单词粘连问题。

解决方案

方案1:修改拼接逻辑(成本最低的修复方案)

拼接每个字幕片段时主动添加空格,同时补充正则清洗多余空格、写文件指定UTF-8编码避免乱码即可,修改后的代码如下:

# 导入依赖库
from youtube_transcript_api import YouTubeTranscriptApi as yta
import re

# 填入目标YouTube视频ID
vid_id = 'S4lTtvlFvyk'

# 提取字幕数据
data = yta.get_transcript(vid_id)

transcript = ''
for value in data:
    # 直接取text字段,不需要遍历所有键
    if 'text' in value:
        # 拼接时主动加空格,避免粘连
        transcript += value['text'] + ' '

# 清洗多余空格、换行符,整理格式
# 把多个连续的空格/换行替换为单个空格
final_tra = re.sub(r'\s+', ' ', transcript).strip()

# 写入文件时指定UTF-8编码避免乱码,with语法会自动关闭文件更安全
with open(r"C:\Users\user.name\Desktop\python\DATA\Video files\trans.txt", 'w', encoding='utf-8') as f:
    f.write(final_tra)

方案2:添加单词分割逻辑(处理残留粘连)

如果部分字幕本身就存在拼写粘连的情况,可以借助wordninja库做英文单词智能分割,进一步优化结果:

  1. 先安装依赖:pip install wordninja
  2. 在方案1的代码基础上补充分割逻辑,示例如下:
import wordninja

# 接方案1的final_tra输出,处理残留粘连
fixed_words = []
for word in final_tra.split():
    # 单词长度超过15个字符时大概率是粘连,做智能分割
    if len(word) > 15:
        fixed_words.extend(wordninja.split(word))
    else:
        fixed_words.append(word)
final_tra = ' '.join(fixed_words)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:24:02