关于Python translate模块短文本场景下< >内文本不显示的问询
Python translate模块保留< >包裹文本的问题解决
解决方案:强制保留< >内容
不管原文本长短,最可靠的方式是手动拆分带< >的标签部分和可翻译文本,分别处理后再拼接:
from translate import Translator # pip install translate tra = Translator(from_lang='en', to_lang='es') def translate_preserve_tags(raw_text): segments = [] current_segment = "" in_tag = False # 遍历文本拆分标签和普通内容 for char in raw_text: if char == "<": if current_segment: segments.append(("content", current_segment.strip())) current_segment = "" in_tag = True current_segment += char elif char == ">": in_tag = False current_segment += char segments.append(("tag", current_segment)) current_segment = "" else: current_segment += char # 处理最后一段内容 if current_segment: segments.append(("content", current_segment.strip())) # 翻译普通内容,保留标签 translated_parts = [] for seg_type, content in segments: if seg_type == "content" and content: translated_parts.append(tra.translate(content)) else: translated_parts.append(content) return " ".join(translated_parts) # 测试短文本场景 test_text = "<untranslated text>Subscribe to the channel." print(translate_preserve_tags(test_text))
关于最小文本长度
没有固定的最小长度阈值,这取决于translate模块底层调用的翻译引擎的文本预处理规则,不同引擎的判断逻辑可能不同。实际测试中,当可翻译的普通文本部分包含3-4个以上单词时,< >包裹的内容更大概率被保留,但这个结果并不稳定,因此不建议依赖文本长度来解决问题,优先使用上述拆分处理的方法。
内容的提问来源于stack exchange,提问作者user28976168
相关产品推荐
相关产品推荐

