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

如何使用Python实现txt文件到tmx文件的格式转换

Python实现TXT转TMX可行方案

TMX是基于XML的翻译记忆标准格式,不存在只能单向转换的限制,直接按标准规范生成结构即可,不需要依赖专门的第三方转换工具,用Python标准库就能实现,兼容性覆盖所有主流CAT工具。

前置要求

先规整你的TXT平行语料格式:

  • 推荐每行存储一组双语对照句对,源文和译文用固定分隔符拆分(最常用制表符\t,也可以用|||这类不会出现在正文里的特殊字符串)
  • 提前清理空行、乱码行、缺源/缺译的无效行

示例TXT内容结构:

Hello world	你好世界
TMX format is widely used in CAT tools	TMX格式在计算机辅助翻译工具中被广泛使用

如果你的TXT是源文、译文分块交替存储的格式,只需要调整后续的文本读取逻辑即可,核心TMX生成逻辑通用。

完整实现代码

直接用Python内置的XML处理库实现,不需要额外安装依赖,生成的文件符合TMX 1.4标准(目前行业兼容性最好的版本):

import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element, SubElement
import os

# 配置参数,根据自身实际情况修改
TXT_PATH = "your_corpus.txt"  # 待转换的txt文件路径
TMX_SAVE_PATH = "output.tmx"  # 生成的tmx文件保存路径
SRC_LANG = "en"  # 源语言代码,中文填zh、英文填en,可按ISO 639-1标准自定义
TGT_LANG = "zh"  # 目标语言代码
SEPARATOR = "\t"  # txt中源文和译文的分隔符
ENCODING = "utf-8"

# 构建TMX标准根结构,1.4版本适配绝大多数CAT工具
root = Element("tmx", version="1.4")
# 写入标准头节点,必填属性补全避免工具导入报错
header = SubElement(
    root,
    "header",
    {
        "creationtool": "Python TXT2TMX Converter",
        "creationtoolversion": "1.0",
        "segtype": "sentence",
        "o-tmf": "Alignment",
        "adminlang": "en",
        "srclang": SRC_LANG,
        "datatype": "plaintext"
    }
)
body = SubElement(root, "body")

# 读取并逐行处理txt内容
with open(TXT_PATH, "r", encoding=ENCODING) as f:
    lines = [line.strip() for line in f if line.strip()]  # 自动过滤空行

for line in lines:
    if SEPARATOR not in line:
        print(f"跳过格式不匹配行:{line}")
        continue
    # 仅按第一个分隔符拆分,避免译文内包含分隔符导致内容截断
    src_text, tgt_text = line.split(SEPARATOR, 1)
    src_text = src_text.strip()
    tgt_text = tgt_text.strip()
    if not src_text or not tgt_text:
        continue
    # 构建单个翻译单元
    tu = SubElement(body, "tu")
    # 写入源语言片段
    tuv_src = SubElement(tu, "tuv", {"xml:lang": SRC_LANG})
    seg_src = SubElement(tuv_src, "seg")
    seg_src.text = src_text
    # 写入目标语言片段
    tuv_tgt = SubElement(tu, "tuv", {"xml:lang": TGT_LANG})
    seg_tgt = SubElement(tuv_tgt, "seg")
    seg_tgt.text = tgt_text

# 输出格式化的合法TMX文件
tree = ET.ElementTree(root)
# Python3.9及以上版本支持自动缩进,3.9以下版本可直接删除下一行
ET.indent(tree, space="  ", level=0)
with open(TMX_SAVE_PATH, "wb") as f:
    f.write(f'<?xml version="1.0" encoding="{ENCODING}"?>\n'.encode(ENCODING))
    tree.write(f, encoding=ENCODING, xml_declaration=False)

print(f"转换完成,文件已保存至:{os.path.abspath(TMX_SAVE_PATH)}")

使用说明

  • 修改代码开头的配置参数,替换为自己的文件路径、语言代码、分隔符即可直接运行
  • Python3.9以下版本删掉ET.indent那行即可正常运行,不影响文件合法性,只是输出的XML没有缩进排版
  • 内置XML库会自动处理&、<、>这类XML特殊字符转义,不会生成损坏的格式文件,比手动拼接字符串稳定性高很多
  • 如果是多语语料,只需要在每个tu翻译单元下新增对应语言的tuv节点即可,逻辑和双语处理完全一致
  • 生成的文件可以直接导入Trados、memoQ、OmegaT、Phrase等所有支持TMX格式的工具使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:39:14