如何使用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
相关产品推荐
相关产品推荐

