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

如何通过Python从XML字幕提取纯文本用于语言模型训练

嘿,我来帮你搞定从XML字幕里提取纯文本的需求!针对你给出的XML结构,用Python的内置XML解析库就能轻松实现,不用额外装依赖,简单高效。

具体实现方案

思路拆解

我们的核心目标是定位到XML里所有<w>标签的文本内容,按顺序拼接成连贯的纯文本,再输出成你想要的格式,最后保存为TXT文件。

代码示例

import xml.etree.ElementTree as ET

def extract_subtitle_text(xml_content):
    # 解析XML字符串
    root = ET.fromstring(xml_content)
    
    # 递归查找所有<w>标签(不管嵌套层级)
    word_nodes = root.findall('.//w')
    
    # 提取每个<w>的文本内容
    text_segments = [node.text for node in word_nodes]
    
    # 处理特殊情况:如果第一个<w>是单独的"-",可以选择跳过(根据你的期望输出调整)
    # 如果你不需要开头的那个"-",就用下面这行替换上面的text_segments
    # text_segments = [node.text for node in word_nodes if node.text.strip() != '-']
    
    # 拼接成完整文本并加上你要的前缀
    final_text = "- " + ' '.join(text_segments)
    
    return final_text

# 测试你的示例XML
sample_xml = '''<?xml version="1.0" encoding="utf-8"?> <document> <s id="1"> <time id="T1S" value="00:00:14,660" /> <w id="1.1">-</w> <w id="1.2">Všetko</w> <w id="1.3">v</w> <w id="1.4">poriadku</w> <w id="1.5">.</w> </s></document>'''

# 获取提取结果
output_text = extract_subtitle_text(sample_xml)
print(output_text)  # 输出:- - Všetko v poriadku .
# 如果启用了跳过开头"-"的逻辑,输出就是你期望的:- Všetko v poriadku .

# 保存到TXT文件
with open('subtitle_text.txt', 'w', encoding='utf-8') as txt_file:
    txt_file.write(output_text)

代码说明

  1. XML解析:用ET.fromstring()直接解析XML字符串,不需要先保存为文件(如果你的输入是本地XML文件,可以用ET.parse()替代)。
  2. 标签定位:root.findall('.//w')会递归查找所有<w>元素,就算XML里有多个<s>段落也能全部覆盖。
  3. 文本拼接:用' '.join()把每个单词/符号用空格分隔,保证文本格式和原字幕一致。
  4. 保存文件:用utf-8编码保存TXT,避免特殊字符(比如示例里的斯洛伐克语字符)出现乱码。

如果你的XML文件更大、结构更复杂(比如多个<document>或<s>标签),这个代码也能无缝适配,因为它是递归查找所有<w>元素的。

内容的提问来源于stack exchange,提问作者Jozef Kondáš

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:13:17