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

如何用Python提取YouTube视频纯净可分析的转录文本

解决YouTube转录文本格式问题:去除时间信息、补全标点与分句

问题描述

使用youtube_transcript_api提取YouTube视频转录文本时,返回结果包含start、duration等无关时间信息,且自动生成的文本无标点、未拆分完整句子,无法直接用于文本分析。


解决方案

1. 提取纯文本(移除时间信息)

遍历返回的字典列表,仅提取text字段即可剥离时间相关数据:

from youtube_transcript_api import YouTubeTranscriptApi

# 获取视频转录数据
srt = YouTubeTranscriptApi.get_transcript("pxiP-HJLCx0")

# 提取纯文本内容
pure_text_list = [item['text'] for item in srt]
# 拼接为完整文本(先保留原始连缀状态,后续处理标点分句)
raw_content = ' '.join(pure_text_list)

# 保存纯文本到文件
with open("clean_subtitles.txt", "w", encoding="utf-8") as f:
    f.write(raw_content)

2. 补全标点与分句

方法一:优先使用人工创建的字幕

人工上传的字幕自带完整标点与分句格式,优先获取这类转录版本:

from youtube_transcript_api import YouTubeTranscriptApi

transcript_list = YouTubeTranscriptApi.list_transcripts('pxiP-HJLCx0')
try:
    # 查找英文人工转录字幕
    transcript = transcript_list.find_manually_created_transcript(['en'])
    formatted_data = transcript.fetch()
    # 拼接带标点的完整文本
    formatted_content = ' '.join([item['text'] for item in formatted_data])
    with open("formatted_subtitles.txt", "w", encoding="utf-8") as f:
        f.write(formatted_content)
except:
    print("无人工创建字幕,将使用自动生成字幕进行格式修复")

方法二:用NLP工具修复自动生成字幕

如果只有自动生成的无标点字幕,使用spaCy这类NLP工具补全标点并分句:
首先安装依赖:

pip install spacy
python -m spacy download en_core_web_sm

然后编写处理代码:

import spacy
from youtube_transcript_api import YouTubeTranscriptApi

# 加载spaCy英文模型
nlp = spacy.load("en_core_web_sm")

# 获取自动生成的转录文本
srt = YouTubeTranscriptApi.get_transcript("pxiP-HJLCx0")
raw_text = ' '.join([item['text'] for item in srt])

# 分句并补全标点
doc = nlp(raw_text)
formatted_text = '\n'.join([sent.text.strip() for sent in doc.sents])

# 保存处理后的文本
with open("fixed_subtitles.txt", "w", encoding="utf-8") as f:
    f.write(formatted_text)

处理后输出的文本会自动补全标点、拆分完整句子,可直接用于文本分析。


内容的提问来源于stack exchange,提问作者Do Hun Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:55:11